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

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

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


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