crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Отчёт по диапазону дат
Patricul
  опции профиля:
сообщение 1.8.2011, 22:57
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 1.8.2011
Пользователь №: 2779

Спасибо сказали: 0 раз(а)




Репутация:   0  


Мне требуется создать отчёт по диапазону дат! В качестве основных виджетов использую QDate и QDateEdit.
На данный момент имею код:
  
  QDate fvalue = QDate::QDate(2010, 5,15);
  QDate nvalue = QDate::QDate(2011,1,11);
  m_pDateEditBegin->setDate(fvalue);
  m_pDateEditNext->setDate(nvalue);

В качестве модели для отображения скорей всего буду использовать QSqlTableModel или QSqlRelationTableModel.
Так вот вопрос как мне разобрать в функции переменные fvalue и nvalue для того чтобы сделать фильтр у противоположной модели по idperson (поле связывающее эти две таблицы).
Не подкините идею как это сделать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 1.8.2011, 23:46
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Не понял. Вам нужно отнять одну дату от другой? Или шагать к примеру по 15 дней начиная с опереденленной?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Patricul
  опции профиля:
сообщение 2.8.2011, 15:54
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 1.8.2011
Пользователь №: 2779

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(RazrFalcon @ 2.8.2011, 0:46) *
Не понял. Вам нужно отнять одну дату от другой? Или шагать к примеру по 15 дней начиная с опереденленной?

Нет мне нужно просто сделать отчёт по диапазону дат! У меня есть две таблицы anketa и workingtrack. Они связаны через 1:M.
А мне нужно просто выбрать диапазон дат на двух виджетах QDateEdit! На них мне необходимо брать дату addingdate (дату занесения), затем мне её каким-то образом нужно передавать для того чтобы зацепиться за idperson другой таблицы и поставить по ней фильтр!
Структура таблиц выглядит так:
anketa workingtrack
idperson id
fio workingplace
birhdate enteringdate
birthplace sackingdate
nomerseria sackingreason
characteristics idperson
addingdate

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Patricul
  опции профиля:
сообщение 2.8.2011, 21:40
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 1.8.2011
Пользователь №: 2779

Спасибо сказали: 0 раз(а)




Репутация:   0  


Народ помогите реализовать идею Отчёта по диапазону дат
Код в конструкторе:
    
    CReport::CReport(QWidget *parent)
    :QDialog(parent)

    {
     m_pReportModel = new QSqlRelationalTableModel(this);  // исходная модель куда будут попадать данные
     m_pReportModel->setTable("workingtrack");
     m_pReportModel->setHeaderData(workingplace, Qt::Horizontal, tr("Место работы"));
     m_pReportModel->setHeaderData(working_enteringdate, Qt::Horizontal, tr("Дата поступления"));
     m_pReportModel->setHeaderData(working_sakingdate, Qt::Horizontal, tr("Дата увольнения"));
     m_pReportModel->setHeaderData(working_sakingreason, Qt::Horizontal, tr("Причина увольнения"));
      m_pReportModel->select();  

     m_pDateEditBegin = new QDateEdit;    
     m_pDateEditBegin->setCalendarPopup(true);

     m_pDateEditNext = new QDateEdit;
     m_pDateEditNext->setCalendarPopup(true); // пока не использую
     QDate today = QDate::currentDate();
     QDate fvalue = QDate::QDate(2010, 5,15);
     QDate nvalue = QDate::QDate(2011,1,11); // пока не использую
  
     m_pDateEditBegin->setDate(fvalue);
     m_pDateEditNext->setDate(nvalue); // пока не использую

     m_pTimeModel = new QSqlQueryModel;
     m_pTimeModel->setQuery("SELECT addingdate, idperson FROM anketa ORDER BY  addingdate");

    connect(m_pDateEditBegin, SIGNAL(dateChanged(QDate)), this, SLOT(changeDate(QModelIndex&)));

     }

Далее функция, где я частично хочу реализовать свою идею

  
  void CReport::changeDate(const QModelIndex &indexb)
{
    QModelIndex indexb2;
    indexb.data().toDate() = m_pDateEditBegin->date();
    for(int i = 0; i < m_pTimeModel->rowCount(); ++i)
    {
        QSqlRecord precord = m_pTimeModel->record(i);
        QDate date = precord.value("addingdate").toDate();
        if (indexb.data().toDate() >= date)
        {
            indexb2.data().toDate() = date;
            break;
        }

    }

    QSqlRecord precord2 = m_pTimeModel->record(indexb2.row());
    int idpersona = precord2.value("idperson").toInt();
    m_pReportModel->setFilter(QString("idperson = %1").arg(idpersona));

}


Программа нормально компилируется, но Дебагер выдаёт, что
Object::connect: No such slot CReport::changeDate(QModelIndex& indexb) in ..\DataBase\creport.cpp:85
И это всё очень странно!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
TaIRou
  опции профиля:
сообщение 2.8.2011, 21:50
Сообщение #5


Студент
*

Группа: Новичок
Сообщений: 13
Регистрация: 26.12.2010
Пользователь №: 2303

Спасибо сказали: 2 раз(а)




Репутация:   0  


connect(m_pDateEditBegin, SIGNAL(dateChanged(QDate)), this, SLOT(changeDate(QModelIndex&)));

не, таким образом ты их не соединишь, должны быть одинаковые сигнатуры
или так
connect(m_pDateEditBegin, SIGNAL(dateChanged(QModelIndex&)), this, SLOT(changeDate(QModelIndex&)));

или так
connect(m_pDateEditBegin, SIGNAL(dateChanged(QDate)), this, SLOT(changeDate(QDate)));

накрайняк так (хотя, гыг, могу тут соврать)
connect(m_pDateEditBegin, SIGNAL(dateChanged(QDate)), this, SLOT(changeDate()));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Patricul
  опции профиля:
сообщение 2.8.2011, 23:47
Сообщение #6


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 1.8.2011
Пользователь №: 2779

Спасибо сказали: 0 раз(а)




Репутация:   0  


TaIRou, ты не соврал! Но функция всё равно не работает как надо...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 8.8.2011, 13:55
Сообщение #7


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Ничего не могу понять. Почему бы не переложить заботу о записях, соответствующих датам на СУБД?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 12.12.2024, 21:00