С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/26: Рейтинг темы: голосов - 26, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 27.06.2011
Сообщений: 21
1

Поиск записей в DBGrid по дате (Datetimepicker, SqlDataSet)

01.01.2014, 20:14. Показов 5078. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, Всех с Новым Годом!
не могу организовать запрос по поиску записей по дате. Использую компоненты Datetimepicker,

Возможен ли такой вариант записи если используеться SqlDateSet? конкретно этот вариант у меня не работает.
Delphi
1
2
3
4
DM.SQLDataSet1.Close;
      DM.SQLDataSet1.CommandText:='select * from postavka_p where Data = :p1';
      DM.SQLDataSet1.ParamByName('p1').AsDate:=DateTimePicker2.Date;
      DM.SQLDataSet1.ExecSQL;


или можно как нибудь так сделать? только как? если использую Datetimepicker
Delphi
1
2
DM.ClientDataSet1.IndexFieldNames:='Data';
    DM.ClientDataSet1.FindNearest([??????]);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.01.2014, 20:14
Ответы с готовыми решениями:

Поиск записей по дате в DBGrid и окрашивание записей
Всем привет! очень нуждаюсь в вашей помощи.пишу программу для диплома,и столкнулся со следующей...

SQLDataSet сортировка по дате?
Доброго времени суток. Подскажите пожалуйста, как сделать сортировку по дате? Я пытаюсь сделать...

Поиск по дате через: DateTimePicker
Добрый день. Начал изучать C++Builder 6 и его взаимодействие с базами данных. Возник вопрос, как...

Поиск по DateTimePicker с DBGrid?
привет ребята! короче у меня в форме есть дбгрид дататаймпикер датасоурс адоканекшн адогуери, база...

17
1075 / 988 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
01.01.2014, 20:28 2
У DateTimePicker есть одно коварное свойство: мы считаем, что его Data - это дата, но на самом деле она содержит и время.
Сравнение одной даты, где нет времени с другой, но которая идет со временем не работает в поиске.
Для решения проблемы нужно исключить время из даты:
Delphi
1
2
3
uses DateUtils;
  ... 
  DM.SQLDataSet1.ParamByName('p1').AsDate := DateOf(DateTimePicker2.Date);
1
0 / 0 / 0
Регистрация: 27.06.2011
Сообщений: 21
01.01.2014, 21:52  [ТС] 3
выдает ошибку.
не понимает он, что такое DateOf

Добавлено через 8 минут
теперь понимает , я в Uses DateUtils не прописал, ошибки не выдает , но и не ищет.
0
1075 / 988 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
01.01.2014, 22:27 4
Может даты такой нет в таблице БД...
Или что-то неверно сделано...
Как понять без материала?
0
0 / 0 / 0
Регистрация: 27.06.2011
Сообщений: 21
01.01.2014, 22:38  [ТС] 5
Delphi
1
DM.Clientdataset1.FieldValues['data']:= Datetimepicker1.time ;
это строчка заполнения поля дата, может я был не прав что выбрал свойство Time
0
1075 / 988 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
01.01.2014, 22:50 6
А при чем здесь Time, если и в первом посте обозначено свойство Date и после речь шла именно о дате?
Вообще-то, какого типа поле в таблице базы данных, в котором происходит поиск?
0
0 / 0 / 0
Регистрация: 27.06.2011
Сообщений: 21
01.01.2014, 22:52  [ТС] 7
Цитата Сообщение от Скандербег Посмотреть сообщение
Может даты такой нет в таблице БД...
Или что-то неверно сделано...
Как понять без материала?
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm3.BitBtn8Click(Sender: TObject);
begin
if (RadioButton2.Checked=True) then
    begin
      DM.SQLDataSet1.Close;
      DM.SQLDataSet1.CommandText:='select * from postavka_p where Data = :p1';
      DM.SQLDataSet1.ParamByName('p1').AsDate:=DateOf(DateTimePicker2.Date);
      DM.SQLDataSet1.ExecSQL;
    end;
en
может быть что в коде неправильно?
0
1075 / 988 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
01.01.2014, 22:57 8
Ну да. Метод ExecSQL применяется для модифицирующих запросов, а для селективных (SELECT) нужно использовать метод Open (DM.SQLDataSet1.Open).
1
0 / 0 / 0
Регистрация: 27.06.2011
Сообщений: 21
01.01.2014, 22:58  [ТС] 9
Цитата Сообщение от Скандербег Посмотреть сообщение
А при чем здесь Time, если и в первом посте обозначено свойство Date и после речь шла именно о дате?
так вот я и спрашиваю что когда я заполнял данные о дате то я использовал свойство Time
Delphi
1
2
3
4
5
6
7
DM.ClientDataSet1.Insert;
      DM.Clientdataset1.FieldValues['kod_postavshika']:=DBLookupComboBox1.Text;
      DM.Clientdataset1.FieldValues['kod_p']:= DBLookupComboBox2.Text;
      DM.Clientdataset1.FieldValues['colich']:= edit3.Text;
      DM.Clientdataset1.FieldValues['data']:= Datetimepicker1.Time;
      DM.clientdataset1.Post;
      DM.clientdataset1.ApplyUpdates(0);
а при поиске я использую Datetimepicker2.date.может быть в этом ошибка?

Цитата Сообщение от Скандербег Посмотреть сообщение
Вообще-то, какого типа поле в таблице базы данных, в котором происходит поиск?
Date
0
1075 / 988 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
01.01.2014, 23:02 10
Вот и непонятно, почему запись идет свойства Time, а поиск по значению свойства Date...
Надо что-то одно использовать.
А что за база то используется, что приходится применять ClientDataSet?

Не по теме:

Удивительно еще и то, что почему-то поиск происходит через SQL запрос, а запись данных по старинному методу Post. Не принципиально, но все же легкое недоумение остается.

0
0 / 0 / 0
Регистрация: 27.06.2011
Сообщений: 21
01.01.2014, 23:30  [ТС] 11
Цитата Сообщение от Скандербег Посмотреть сообщение
Вот и непонятно, почему запись идет свойства Time, а поиск по значению свойства Date...
Надо что-то одно использовать.
Сейчас буду исправлять.

Добавлено через 26 минут
всё исправил, перепробовал всё, всё равно не ищет. можно как нибудь по другому организовать поиск, не через запрос?
0
1075 / 988 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
01.01.2014, 23:46 12
Чтобы ответить надо знать что вообще за база, как организованы таблицы БД и доступ к данным.
Без проекта что-либо достойное предложить сложно.
Правда, код поиска, прямо сказать, ни к чему не приводит. Ну, запросили данные, ну открыли, а что дальше?
Может это вообще не поиск, а установка фильтра? Тогда ничего плохого в таком "поиске" не просматривается.

Добавлено через 9 минут
можно как нибудь по другому организовать поиск, не через запрос?
Если речь идет именно о поиске, а не об установке фильтра, то можно применять метод Locate.
0
0 / 0 / 0
Регистрация: 27.06.2011
Сообщений: 21
02.01.2014, 00:16  [ТС] 13
Цитата Сообщение от Скандербег Посмотреть сообщение
Чтобы ответить надо знать что вообще за база, как организованы таблицы БД и доступ к данным.
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE sklad.postavka_p (
  kod_postavshika INT(11) DEFAULT NULL,
  kod_p INT(11) DEFAULT NULL,
  colich INT(11) DEFAULT NULL,
  DATA DATE DEFAULT NULL,
  CONSTRAINT FK_postavka_p_packages_Kod_p FOREIGN KEY (kod_p)
  REFERENCES sklad.packages (Kod_p) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT FK_postavka_p_postavshik_kod_postavshika FOREIGN KEY (kod_postavshika)
  REFERENCES sklad.postavshik (kod_postavshika) ON DELETE RESTRICT ON UPDATE RESTRICT
)
ENGINE = INNODB
AVG_ROW_LENGTH = 910
CHARACTER SET cp1251
COLLATE cp1251_general_ci;

Может быть это как то поможет Вам? чтобы помочь мне.

также я осуществляю поиск в той же таблице по полю kod_p, здесь все работает.
Delphi
1
2
3
4
5
6
7
8
procedure TForm3.Edit1Change(Sender: TObject);
 
begin
if  RadioButton1.Checked then
   begin
    DM.ClientDataSet1.IndexFieldNames:='kod_p';
    DM.ClientDataSet1.FindNearest([Edit1.Text]);
end;
Миниатюры
Поиск записей в DBGrid по дате (Datetimepicker, SqlDataSet)   Поиск записей в DBGrid по дате (Datetimepicker, SqlDataSet)  
0
1075 / 988 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
02.01.2014, 00:24 14
Не настораживает, что имя поля DATA "подсвечено" как зарезервированное?
Так и не сказано что за СУБД. Скрипт создания таблицы типичен для многих СУБД.
А вот можно ли поле называть DATA зависит от конкретной СУБД.
0
0 / 0 / 0
Регистрация: 27.06.2011
Сообщений: 21
02.01.2014, 00:26  [ТС] 15
Mysql
0
1075 / 988 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
02.01.2014, 00:32 16
Mysql не моя СУБД. И пока не появиться гуру по ней мы будем только гадать чего сделано в поиске не так.
Но независимо от типа БД во всех Dataset'ах (ClientDataset не исключение) есть метод для поиска, называемый Locate. Можно попытать его.
0
0 / 0 / 0
Регистрация: 27.06.2011
Сообщений: 21
02.01.2014, 00:52  [ТС] 17
Цитата Сообщение от Скандербег Посмотреть сообщение
Mysql не моя СУБД. И пока не появиться гуру по ней мы будем только гадать чего сделано в поиске не так.
Но независимо от типа БД во всех Dataset'ах (ClientDataset не исключение) есть метод для поиска, называемый Locate. Можно попытать его
Спасибо большое за столь огромное время которое Вы мне уделили.
буду пытать Locate.
P.S. поле дата переименовал в поле data_p обновил всё, но искать так и не хочет((

Добавлено через 10 минут
Цитата Сообщение от Скандербег Посмотреть сообщение
Если речь идет именно о поиске, а не об установке фильтра, то можно применять метод Locate.
по сути мне всё равно чем пользоваться(поиск,фильтрация) главное результат, чтобы из кучи записей он перемещал курсор на те записи которые соответствуют дате которую я указываю.
0
1075 / 988 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
02.01.2014, 01:06 18
Да, понятно. Но без проекта все равно сложно определить причину проблемы.
0
02.01.2014, 01:06
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.01.2014, 01:06
Помогаю со студенческими работами здесь

DBGrid. DateTimePicker. Edit. Поиск
такое дело, имеется бд, ктря в дбгриде. поиск закл в том что нужно определить количество заведений...

Как через компонет DateTimePicker сделаь поиск по дате в программме БД?
Здравствуйте. Мне нужно чтобы пользователь через Edit ввел дату и в компоненте DBGrid...

DateTimePicker и выборка по дате
Доброго времени суток! В таблице S MS SQL Server имеется поле D типа date. Вопрос такой, как...

Вывести в datagridview по указанной дате dateTimePicker
добрый вечер. никак не могу разобраться что не так я сделал. в интернете везде смотрел и здесь на...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru