Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2010, 08:10   #1
Maxvella
Пользователь
 
Регистрация: 06.12.2010
Сообщений: 16
Вопрос Фильтрация данных по дате от и до

Еще раз всем привет!!!

создал БД, в ней есть поле ДАТА, как сделать чтобы при нажатие кнопки происходил отбор данных за указанный период. т.е. по двум DateTimePicker от и до.... БД в файле *.xml, т.е запрос через clientdateset, по полю "date", после чего остаются только те записи которые находятся в этом промежутки времени.:confus ed:
Maxvella вне форума Ответить с цитированием
Старый 07.12.2010, 08:20   #2
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Код:
Form1.ClientDataSet.Params.AddParam(Form1.ClientDataSet.Params.CreateParam(ftDateTime,'d1',ptInput));
Form1.ClientDataSet.Params.AddParam(Form1.ClientDataSet.Params.CreateParam(ftDateTime,'d2',ptInput));
Form1.ClientDataSet.Params.ParamByName('d1').AsDate:=DateTimePicker1.Date;
Form1.ClientDataSet.Params.ParamByName('d2').AsDate:=DateTimePicker2.Date;
Form1.ClientDataSet.CommandText:='SELECT * FROM Таблица WHERE  data BETWEEN :d1 AND :d2';
Form1.ClientDataSet.Execute;
SERG1980 вне форума Ответить с цитированием
Старый 07.12.2010, 08:33   #3
Maxvella
Пользователь
 
Регистрация: 06.12.2010
Сообщений: 16
По умолчанию

Подскажите ....
вот на этом месте выдает ошибку
Form1.ClientDataSet.CommandText:='S ELECT * FROM Таблица WHERE data BETWEEN 1 AND 2';
Form1.ClientDataSet.Execute;
Изображения
Тип файла: jpg error.jpg (10.0 Кб, 161 просмотров)
Maxvella вне форума Ответить с цитированием
Старый 07.12.2010, 08:46   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
SERG1980
А по-моему мона упростить:
Код:
with Form1.ClientDataSet do begin
 Params.ParamByName('d1').AsDate:=DateTimePicker1.Date;
 Params.ParamByName('d2').AsDate:=DateTimePicker2.Date;
 CommandText:='SELECT * FROM Таблица WHERE  data BETWEEN :d1 AND :d2';
 Execute;
Меньше кода - читабельнее
Цитата:
Maxvella
А ты ему провайдера указал? Этот код только набор получает не более.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.12.2010, 09:04   #5
Maxvella
Пользователь
 
Регистрация: 06.12.2010
Сообщений: 16
По умолчанию

Спасибо Вам большое!!! За ответы.... Но нифига не получатся произвести отбор данных.
Maxvella вне форума Ответить с цитированием
Старый 07.12.2010, 09:10   #6
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Код рабочй брал с одной из своих программ. нужно глянуть как у вас серверная часть сделана. И надеюсь вы имя своей таблицы в запросе указали, и имя поля data. В св-ве ProviderName указан провайдер?
Для Stilet: уменя так и сделано. Но боюсь для автора темы это может быть не очень понятно

Последний раз редактировалось SERG1980; 07.12.2010 в 09:16.
SERG1980 вне форума Ответить с цитированием
Старый 07.12.2010, 09:14   #7
Maxvella
Пользователь
 
Регистрация: 06.12.2010
Сообщений: 16
По умолчанию

скажите, я реально не догоняю, где ошибка....
Код:
procedure TForm1.BitBtn4Click(Sender: TObject);
var
d1, d2: TDateTime;
begin
ClientDataSet1.Params.AddParam(ClientDataSet1.Params.CreateParam(ftDateTime,'d1',ptInput));
ClientDataSet1.Params.AddParam(ClientDataSet1.Params.CreateParam(ftDateTime,'d2',ptInput));
ClientDataSet1.Params.ParamByName('d1').AsDate:=DateTimePicker2.Date;
ClientDataSet1.Params.ParamByName('d2').AsDate:=DateTimePicker3.Date;
ClientDataSet1.CommandText:='SELECT * FROM' +GetCurrentDir+'\base\'+ComboBox1.Text +'.xml'+WHERE  data BETWEEN :d1 AND :d2';
ClientDataSet1.Execute;
   end;
Ребята помогите разобраться с этой проблемой.....

Последний раз редактировалось Stilet; 07.12.2010 в 11:47.
Maxvella вне форума Ответить с цитированием
Старый 07.12.2010, 10:12   #8
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

1. В чём вы создали БД
2. Как построен сервер (если вообще БД клиент серверная или она локальная).
SERG1980 вне форума Ответить с цитированием
Старый 07.12.2010, 10:24   #9
Maxvella
Пользователь
 
Регистрация: 06.12.2010
Сообщений: 16
По умолчанию

БД очень проста, автоматически создаются файлы *.xml в определенный каталог, создаются без расширения, так как при работе с каждым файлом он загружается в combobox для последующей обработке, что происходит с самим файлом содержаться в нем, вся информация отображается внутри него. Когда данный файл загружается в таблицу он показывает всю подробную инфу. Имеется поле ДАТА, в котором фиксируется дата обработки этого файла, т.е. изменение, дополнение. Дата в поле ДАТА заносится как текст(ни как дата) при помощи DateToStr(DateTimePicker.Date). Вот теперь и столкнулся с задай, как сделать отбор данных за период времени при помощи двух DateTimePicker(ОТ и ДО). т.к. фильтрация не удовлетворяет требованиям.
Может и глупо, но работает безотказно....

Последний раз редактировалось Maxvella; 07.12.2010 в 10:26. Причина: опечатка
Maxvella вне форума Ответить с цитированием
Старый 07.12.2010, 10:47   #10
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

При чём тут вообще тогда ClientDataSet. Извините но я ничего не понимаю
SERG1980 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтрация по дате в ADO AlexSol.BY Помощь студентам 5 07.12.2010 10:32
Фильтрация по начальной и конечной дате в базе данных FoxBrut Помощь студентам 0 16.06.2010 21:22
фильтрация по текущей дате ahvahsky2008 БД в Delphi 5 04.05.2010 05:30
Фильтрация по текущей дате DimOn4Ik БД в Delphi 4 25.04.2010 21:48
Фильтрация Query по дате Riddick Помощь студентам 3 10.11.2008 20:35