Russian Qt Forum

Qt => Базы данных => Тема начата: LEO от Ноябрь 29, 2012, 08:33



Название: Отображение добавленных записей за последние сутки [РЕШЕНО]
Отправлено: LEO от Ноябрь 29, 2012, 08:33
Привет, есть БД созданная в  SQLITE, пытаюсь сделать фильтр таким образом:

model->setFilter("smena LIKE '"+ui->label_5->text()+"'  and date>=curdate() ");
где model - QSqlTablemodel, smena - колонка с данными,  date - колонка даты, фильтр не работает.

Делаю так model->setFilter("smena LIKE '"+ui->label_5->text()+"'  ORDER BY id DESC LIMIT 10 "); - работает, но это не совсем то что нужно, нужен фильтр за  день и за текущую смену одновременно... ???

 


Название: Re: Прошу помощи в организации запроса в БД
Отправлено: trot от Ноябрь 29, 2012, 10:07
Цитировать
date>=curdate()

я это понял так, что вы тащите даты больше текущей.
может надо так date<=curdate()


Название: Re: Прошу помощи в организации запроса в БД
Отправлено: LEO от Ноябрь 29, 2012, 10:34
Цитировать
date<=curdate()

так тоже пробовал, не работает, хотя если так делать как вы говорите то по идее выдаст все записи, получается дата меньше или равна текущей, мне по сути надо равная текущей... вообще мне в идеале требуется выдавать записи за вчера и сегодня


Название: Re: Прошу помощи в организации запроса в БД
Отправлено: carrygun от Ноябрь 29, 2012, 11:23
Может формат даты не совпадает в date и curdate()?


Название: Re: Прошу помощи в организации запроса в БД
Отправлено: LEO от Ноябрь 29, 2012, 12:14
делал такого плана запрос в клиенте SQLITE, все ок, работает как надо, только делал вот так:

select * from tbl where smena like 'trololo' and date>=curdate()

как я понимаю это аналог запроса
model->setFilter("smena LIKE 'trololo'  and date>=curdate() ");


Название: Re: Прошу помощи в организации запроса в БД
Отправлено: carrygun от Ноябрь 29, 2012, 12:44
Попробуй у модели после setFilter() вызвать метод select() и посмотреть что он вернет (true/false). Как вариант еще можно будет посмотреть на selectStatement() у модели, может она чего неправильно генерирует.


Название: Re: Прошу помощи в организации запроса в БД
Отправлено: Disaron от Ноябрь 29, 2012, 21:36
Юзайте прелести QString, чтобы не ломать голову со строками.
Попробуйте так:
model->setFilter(QString("smena LIKE \'%1\'  date>=\"%2\" ").arg(ui->label_5->text()).arg(QDate::currentDate().toString("yyyy-MM-dd")))

Я не в курсе - поддерживает ли либа qsqlite такие функции вообще. Этот вариант работает. Только не помню насчет строк в лайте - в одинарных или в двойных кавычках они... Запутался уже в СУБДшках.


Название: Re: Прошу помощи в организации запроса в БД
Отправлено: LEO от Ноябрь 30, 2012, 09:35
спасибо за советы походу поддерживает, что то использовал как то подобное, но в моем случае фильтрации не происходит...
видимо в кавычках путаю, буду пробывать дальше... :-[

допилил, получилось вот так, работает:

model->setFilter(QString("smena LIKE '%1' and date >='%2' ").arg(ui->label_5->text()).arg(QDate::currentDate().toString("yyyy-MM-dd")));

А как сделать отображение данных добавленных за последние 2-е суток?!


Название: Re: Прошу помощи в организации запроса в БД
Отправлено: carrygun от Ноябрь 30, 2012, 14:01
За вчера и сегодня:
Код
C++ (Qt)
...QDate::currentDate().addDays(-1)...
Ну или сам смотри как тебе надо. Еще заодно прочитай справку по QDate, возможно, отпадут еще какие вопросы.


Название: Re: Прошу помощи в организации запроса в БД
Отправлено: LEO от Ноябрь 30, 2012, 22:33
Все работает как надо, всем спасибо, тема закрыта