Russian Qt Forum
Ноябрь 23, 2024, 21:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отображение добавленных записей за последние сутки [РЕШЕНО]  (Прочитано 5478 раз)
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 "); - работает, но это не совсем то что нужно, нужен фильтр за  день и за текущую смену одновременно... Непонимающий

 
« Последнее редактирование: Ноябрь 30, 2012, 22:36 от LEO » Записан
trot
Гость
« Ответ #1 : Ноябрь 29, 2012, 10:07 »

Цитировать
date>=curdate()

я это понял так, что вы тащите даты больше текущей.
может надо так date<=curdate()
Записан
LEO
Гость
« Ответ #2 : Ноябрь 29, 2012, 10:34 »

Цитировать
date<=curdate()

так тоже пробовал, не работает, хотя если так делать как вы говорите то по идее выдаст все записи, получается дата меньше или равна текущей, мне по сути надо равная текущей... вообще мне в идеале требуется выдавать записи за вчера и сегодня
Записан
carrygun
Гость
« Ответ #3 : Ноябрь 29, 2012, 11:23 »

Может формат даты не совпадает в date и curdate()?
Записан
LEO
Гость
« Ответ #4 : Ноябрь 29, 2012, 12:14 »

делал такого плана запрос в клиенте SQLITE, все ок, работает как надо, только делал вот так:

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

как я понимаю это аналог запроса
model->setFilter("smena LIKE 'trololo'  and date>=curdate() ");
« Последнее редактирование: Ноябрь 29, 2012, 12:28 от LEO » Записан
carrygun
Гость
« Ответ #5 : Ноябрь 29, 2012, 12:44 »

Попробуй у модели после setFilter() вызвать метод select() и посмотреть что он вернет (true/false). Как вариант еще можно будет посмотреть на selectStatement() у модели, может она чего неправильно генерирует.
Записан
Disaron
Гость
« Ответ #6 : Ноябрь 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 такие функции вообще. Этот вариант работает. Только не помню насчет строк в лайте - в одинарных или в двойных кавычках они... Запутался уже в СУБДшках.
« Последнее редактирование: Ноябрь 29, 2012, 21:38 от Disaron » Записан
LEO
Гость
« Ответ #7 : Ноябрь 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-е суток?!
« Последнее редактирование: Ноябрь 30, 2012, 11:12 от LEO » Записан
carrygun
Гость
« Ответ #8 : Ноябрь 30, 2012, 14:01 »

За вчера и сегодня:
Код
C++ (Qt)
...QDate::currentDate().addDays(-1)...
Ну или сам смотри как тебе надо. Еще заодно прочитай справку по QDate, возможно, отпадут еще какие вопросы.
Записан
LEO
Гость
« Ответ #9 : Ноябрь 30, 2012, 22:33 »

Все работает как надо, всем спасибо, тема закрыта
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.173 секунд. Запросов: 20.