Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 1
Регистрация: 22.12.2010
Сообщений: 128

Фильтр в DBGrid по DateTimePicture

29.03.2015, 16:59. Показов 839. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Пытаюсь осуществить фильтр по компоненту DateTimePicture через компонент ChekBox. Делаю следующее:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void __fastcall TForm1::ChBFilterTabelClick(TObject *Sender) {
    String fn;
    fn = DBGrid3->SelectedField->FieldName;
    DataModule2->QueryTable->Transaction->Commit();
    DataModule2->QueryTable->SQL->Clear();
    // выбираю данные из таблицы:
    DataModule2->QueryTable->SQL->Add("select *from table");
 
    if (ChBFilterTabel->Checked) {
        // если свойство Checked установлено то:
        DataModule2->QueryTable->SQL->Add
            ("where bdate LIKE '" + DTPicTabelFilter->DateTime + "%'");
        // задаюпорядок сортировки
        DataModule2->QueryTable->SQL->Add("order by " + fn);
        DataModule2->QueryTable->Active = true;
    }
}
Где: DTPicTabelFilter это компонент DateTimePicture, а ChBFilterTabel это компонент ChekBox;
table название таблицы в БДЖ, bdate поле этой таблицы, по которому пытаюсь отфильтровать.
Но при выполнении запроса (когда поднимаю флажок в ChekBox), вываливает ошибку в запросе SQL.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.03.2015, 16:59
Ответы с готовыми решениями:

Фильтр в DBGrid
Здравствуйте! Я создаю базу данных в builder мне нужно создать программу телепередач. В программе передач есть колонки дата, время начала и...

фильтр в DBGRID!
Делаю базу данных "Библиотека". Мне необходимо сделать фильтрацию по нескольким столбцам. Вот код var filtr, add: string; begin ...

фильтр dbgrid
не могу придумать как сделать фильтр dbgrig использую ado+access запрос делаю как adoquery>datasourse>dbgrid вот сам запрос ...

11
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
29.03.2015, 17:19
Цитата Сообщение от Oleg34 Посмотреть сообщение
Но при выполнении запроса (когда поднимаю флажок в ChekBox), вываливает ошибку в запросе SQL.
Какую именно?
0
Модератор
 Аватар для D1973
9915 / 6452 / 2455
Регистрация: 21.01.2014
Сообщений: 27,386
Записей в блоге: 3
29.03.2015, 18:59
Цитата Сообщение от Oleg34 Посмотреть сообщение
DateTimePicture
Может быть все-таки DateTimePicker?
Цитата Сообщение от Oleg34 Посмотреть сообщение
bdate поле этой таблицы
Какого типа поле?
0
1 / 1 / 1
Регистрация: 22.12.2010
Сообщений: 128
29.03.2015, 21:07  [ТС]
тип поля DATE (использую IBExpert) И конечно DateTimePicker))!

Добавлено через 7 минут
текст ошибки:
Dynamic SQL Error
SQL error code= -104
Token unknown - line 1, column 14 table
0
Модератор
 Аватар для D1973
9915 / 6452 / 2455
Регистрация: 21.01.2014
Сообщений: 27,386
Записей в блоге: 3
29.03.2015, 22:25
Могу и ошибаться, но ИМХО конструкция LIKE в запросе применима только к текстовым полям...
Поля даты сравниваются, как и числовые данные (равно, больше, меньше, ну еще Between допустим)
1
1 / 1 / 1
Регистрация: 22.12.2010
Сообщений: 128
29.03.2015, 22:57  [ТС]
Понял, спасибо!
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
30.03.2015, 08:27
Цитата Сообщение от D1973 Посмотреть сообщение
Могу и ошибаться
Да, ошибаешься.

C++
1
2
3
4
MainForm->ADOQuery1->Close();
    MainForm->ADOQuery1->SQL->Clear();
    MainForm->ADOQuery1->SQL->Add("Select *from Glavnaya WHERE Invent_Number LIKE '"+Edit1->Text+"%' ORDER BY Invent_Number");
    MainForm->ADOQuery1->Open();
Поле Invent_Number числовое
0
Модератор
 Аватар для D1973
9915 / 6452 / 2455
Регистрация: 21.01.2014
Сообщений: 27,386
Записей в блоге: 3
30.03.2015, 08:48
Sasha, а с типом Date это тоже будет работать? Сейчас просто ничего под рукой нет проверить...
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
30.03.2015, 08:57
Цитата Сообщение от D1973 Посмотреть сообщение
Sasha, а с типом Date это тоже будет работать? Сейчас просто ничего под рукой нет проверить...
Как бы да, во всяком случае у меня работает. Поле Data_pokupki имеет тип Дата\Время
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if(MaskEdit1->EditText!="__.__.____")
  {
    MainForm->ADOQuery1->Close();
    MainForm->ADOQuery1->SQL->Clear();
    MainForm->ADOQuery1->SQL->Add("Select * from Glavnaya WHERE  Data_pokupki LIKE '"+MaskEdit1->EditText+"%'ORDER BY Data_pokupki ASC");
    MainForm->ADOQuery1->Open();
    if(MainForm->ADOQuery1->RecordCount!=0)
    {
     SpeedButton1->Enabled = true;
     SpeedButton2->Enabled = true;
     Word->Enabled = true;
    }
    else
    {
     SpeedButton1->Enabled = false;
     SpeedButton2->Enabled = false;
     Word->Enabled = false;
    }
     MainForm->Caption = nazv + " - Выборка по дате покупки"+ AnsiString(" (") + MaskEdit1->Text+")";
     MainForm->DBGridScroll();
  }
0
Модератор
 Аватар для D1973
9915 / 6452 / 2455
Регистрация: 21.01.2014
Сообщений: 27,386
Записей в блоге: 3
30.03.2015, 09:23
Да, действительно, сейчас сам состряпал примерчик с датой - действительно отрабатывает
C++
1
ADOQuery->SQL->Add("SELECT * FROM DB.tab1 WHERE eee LIKE '%" + DateTimePicker1->Date + "%'");
еее - поле типа "Дата и время"
Единственно, я проверял это на Access, а не на IBExpert. Может, хранение даты там в разных форматах?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
30.03.2015, 09:52
D1973, я думаю здесь человеку просто надо воспользоваться параметризированнным запросом

C++
1
2
3
4
5
6
7
8
9
10
11
12
    DataModule2->QueryTable->Close();
    DataModule2->QueryTable->SQL->Clear();
    DataModule2->QueryTable->SQL->Add("select *from table");
 
    if (ChBFilterTabel->Checked) {
        // если свойство Checked установлено то:
        DataModule2->QueryTable->SQL->Add("where bdate =:Date1"); 
        // задаюпорядок сортировки
        DataModule2->QueryTable->SQL->Add("order by " + DBGrid3->SelectedField->FieldName);
        DataModule2->QueryTable->ParamByName("Date1")->Value = DTPicTabelFilter->DateTime.FormatString("dd.mm.yyyy");
        DataModule2->QueryTable->Open();
  }
2
1 / 1 / 1
Регистрация: 22.12.2010
Сообщений: 128
30.03.2015, 12:16  [ТС]
Огромное спасибо!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.03.2015, 12:16
Помогаю со студенческими работами здесь

Фильтр в DBGrid
Здравствуйте. Подскажите пожалуйста. У меня есть подключенная БД к приложению в делфи через ADOConnectoin, ADOTable, ADOQuery и DataSource....

Фильтр в DBGrid
У меня в переменной находится логин. Для того чтобы зайдя в личный кабинет, все данные что есть в таблице отсортировались по логину под...

Фильтр DBGrid
Подскажите пожалуйста как отфильтровать DBGrid на период дат, но только не SQL. Заранее благодарен.

Фильтр DBGrid. Ошибка
Подскажите плиз в чем ошибка procedure TForm1.Button5Click(Sender: TObject); begin Table1.Filtered:=False; if...

Фильтр DBgrid по дате
Здравствуйте, есть Dbgrid и DateTimePicker. В DBgrid есть поле Дата мне нужно вывести в DBgrid записи месяц в которых совпадал бы с месяцем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru