Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.04.2012, 13:11
AlexGTX AlexGTX вне форума
Прохожий
 
Регистрация: 19.04.2012
Сообщения: 24
Репутация: 10
По умолчанию Отбор записей из диапазона дат DateTimePicker, Paradox

Прошу помощи у знающих людей, не могу организовать отбор записей в таблице из заданного диапазона дат(DateTimePicker). Вылезает непонятная ошибка при попытке сортировки. Поле Data в таблице типа Date/Time. Фрагмент запроса:
Код:
procedure TForm3.Button4Click(Sender: TObject);
Var
Data1, Data2:string;
begin
  Data1:=DateToStr(DateTimePicker1.DateTime);
  Data2:=DateToStr(DateTimePicker2.DateTime);
with Form3.Query1 do
        begin
        Close;
        SQL.Clear;
        Form3.Query1.Close;
        SQL.Text:='SELECT * FROM OsSklad WHERE Data >= '+Data1+' and Data <='+Data2+'';
        Open;
        end;
end;
Админ: Пользуемся тегами для оформления кода!

Ошибка на рисунке
Изображения
Тип файла: jpg Err.JPG (18.0 Кбайт, 10 просмотров)

Последний раз редактировалось Admin, 23.04.2012 в 13:42.
Ответить с цитированием
  #2  
Старый 23.04.2012, 13:51
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Код:
with Form3.Query1 do
  begin
    Close;
    SQL.Text:= 'select * from OsSklad where [Data] >= '+QuotedStr(Data1)+' and [Data] <= '+QuotedStr(Data2);
    Open;
  end;
Если не поможет, пропишите перед Open строчку:
Код:
SQL.SaveToFile('C:\123.txt');
Потом посмотрите получившийся запрос в 123.txt на диске С:\ и скиньте сюда текст запроса.
__________________
Google в помощь

Последний раз редактировалось Ildar-tsr, 23.04.2012 в 14:00.
Ответить с цитированием
  #3  
Старый 23.04.2012, 15:33
AlexGTX AlexGTX вне форума
Прохожий
 
Регистрация: 19.04.2012
Сообщения: 24
Репутация: 10
По умолчанию

Не сработало((( ошибка такая же, вот файлик.
Вложения
Тип файла: txt 123.txt (79 байт, 9 просмотров)
Ответить с цитированием
  #4  
Старый 23.04.2012, 15:38
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

А если без квадратных скобок?
Код:
SQL.Text:= 'select * from OsSklad where Data >= '+QuotedStr(Data1)+' and Data <= '+QuotedStr(Data2);
Как в Paradox кстати перевести строку в дату?
__________________
Google в помощь

Последний раз редактировалось Ildar-tsr, 23.04.2012 в 15:42.
Ответить с цитированием
  #5  
Старый 23.04.2012, 16:29
AlexGTX AlexGTX вне форума
Прохожий
 
Регистрация: 19.04.2012
Сообщения: 24
Репутация: 10
По умолчанию

Тоже самое и без скобок, из строки в дату вроде так StrToDateTime

Последний раз редактировалось AlexGTX, 23.04.2012 в 16:32.
Ответить с цитированием
  #6  
Старый 23.04.2012, 17:35
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от AlexGTX
Тоже самое и без скобок, из строки в дату вроде так StrToDateTime

Перепиши на использование параметров - подозреваю, что проблемы именно с предстввлением даты:

Код:
...
SQL.Text:= 'select * from OsSklad where Data >= :param1 and Data <= :param2';
ParamByName('param1').AsDateTime := DateTimePicker1.DateTime;
ParamByName('param2').AsDateTime := DateTimePicker2.DateTime;
Open;
...
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
AlexGTX (23.04.2012)
  #7  
Старый 23.04.2012, 17:49
AlexGTX AlexGTX вне форума
Прохожий
 
Регистрация: 19.04.2012
Сообщения: 24
Репутация: 10
По умолчанию

Классно! Помогло, только почему-то первую дату не включает. Например, есть записи подряд с 15.04.2012 по 20.04.2012. В DateTimePicker1 выбираю 15.04.2012, а DateTimePicker2 - 20.04.2012, и записи в таблице появляются начиная с 16.04.2012. Что за хрень???
Ответить с цитированием
  #8  
Старый 23.04.2012, 18:03
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Цитата:
Сообщение от AlexGTX
Классно! Помогло, только почему-то первую дату не включает. Например, есть записи подряд с 15.04.2012 по 20.04.2012. В DateTimePicker1 выбираю 15.04.2012, а DateTimePicker2 - 20.04.2012, и записи в таблице появляются начиная с 16.04.2012. Что за хрень???
Код:
ParamByName('param1').AsDateTime := DateTimePicker1.DateTime;
ParamByName('param2').AsDateTime := DateTimePicker2.DateTime;
__________________
Google в помощь

Последний раз редактировалось Ildar-tsr, 23.04.2012 в 18:21.
Ответить с цитированием
  #9  
Старый 23.04.2012, 18:35
AlexGTX AlexGTX вне форума
Прохожий
 
Регистрация: 19.04.2012
Сообщения: 24
Репутация: 10
По умолчанию

Такая же хрень, не включает первую дату, но отбор работает, таблица заполняется со следующей даты из диапазона.

Последний раз редактировалось AlexGTX, 23.04.2012 в 18:39.
Ответить с цитированием
  #10  
Старый 23.04.2012, 19:13
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от AlexGTX
Такая же хрень, не включает первую дату, но отбор работает, таблица заполняется со следующей даты из диапазона.

А это уже проблемы того, что подствляется и время.
Тогда попробуй так:
Код:
...
SQL.Text:= 'select * from OsSklad where Data >= :param1 and Data < :param2';
ParamByName('param1').AsDateTime := DateOf(DateTimePicker1.DateTime);
ParamByName('param2').AsDateTime := DateOf(DateTimePicker2.DateTime)+1;
Open;
...
Ответить с цитированием
  #11  
Старый 24.04.2012, 11:00
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Цитата:
Сообщение от lmikle
Код:
...
SQL.Text:= 'select * from OsSklad where Data >= :param1 and Data < :param2';
ParamByName('param1').AsDateTime := DateOf(DateTimePicker1.DateTime);
ParamByName('param2').AsDateTime := DateOf(DateTimePicker2.DateTime)+1;
Open;
...

Код:
ParamByName('param1').AsDate := DateTimePicker1.Date;
ParamByName('param2').AsDate := DateTimePicker2.Date+1;

не будем усложнять себе жизнь
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #12  
Старый 26.04.2012, 09:04
AlexGTX AlexGTX вне форума
Прохожий
 
Регистрация: 19.04.2012
Сообщения: 24
Репутация: 10
По умолчанию

Цитата:
Сообщение от Yurk@
Код:
ParamByName('param1').AsDate := DateTimePicker1.Date;
ParamByName('param2').AsDate := DateTimePicker2.Date+1;

не будем усложнять себе жизнь
Спасибо за помощь!!! Все работает !!! Правда код слегка подправил)))
ParamByName('param1').AsDateTime := DateTimePicker1.DateTime-1;
ParamByName('param2').AsDateTime := DateTimePicker2.DateTime;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:22.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter