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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2015, 11:24   #1
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию Delphi, SQL, дата

Всем доброго времени суток! Нужна Ваша помощь.

Имеется запрос вида:
PHP код:
SELECT бла бла бла
       FROM бла бла бла
INNER JOIN бла бла бла
       ON бла бла бла
WHERE x
.[dateBETWEEN '2012-01-01' and '2013-01-01' 
(оставил только момент с датой, остальное неважно)
На уровне SQL Server Management Studio работает нормально. Пытаюсь перенести все это дело в Delphi с использованием там DateTimePicker'ов для получения диапазона дат.

Выглядит это примерно так:
Код:
  DateTimeToString(d1, 'yyyy-mm-dd', DateTimePicker1.Date);
  DateTimeToString(d2, 'yyyy-mm-dd', DateTimePicker2.Date);
Код:
  ADOQuery1.Close;
  ADOQuery1.SQL.ADD('бла бла бла');
  ADOQuery1.SQL.ADD('бла бла бла');
  ADOQuery1.SQL.ADD('бла бла бла');
  ADOQuery1.SQL.ADD('бла бла бла');
  ADOQuery1.SQL.ADD('WHERE x.[date] BETWEEN :d1 and :d2');
  ADOQuery1.Parameters.ParamByName('d1').Value := d1;
  ADOQuery1.Parameters.ParamByName('d2').Value := d2;
  ADOQuery1.Open;
Работать не хочет.
Нужна Ваша помощь.
nactyx вне форума Ответить с цитированием
Старый 23.10.2015, 11:33   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы взяли хорошую и правильную идею (использовать параметры) и извратили её до предела!!

Внимание! НЕ НУЖНО ПРЕОБРАЗОВЫВАТЬ дату в строку. и всё. Всё сразу заработает как надо!

единственное, я бы временную составляющую (которая есть в DateTimePicker в виде часов, минут, секунд) исключил из даты

попробуйте:
Код:
var d1,d2 : TDateTime;
begin
.....
  d1 := Trunc(DateTimePicker1.Date);
  d2 := Trunc(DateTimePicker2.Date);
к самому запросу/передаче параметров в запросу у меня претензий нет.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.10.2015, 11:41   #3
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

Serge_Bliznykov, изначально так и делал, но мне показалось, что программа зависает. Оказывается, надо было просто подождать.
Спасибо за то, что убедили в том, что изначально я шел правильным путем Всё получилось.
nactyx вне форума Ответить с цитированием
Старый 23.10.2015, 13:29   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

пожалуйста.

Цитата:
Сообщение от nactyx Посмотреть сообщение
Serge_Bliznykovно мне показалось, что программа зависает. Оказывается, надо было просто подождать.
если имеете доступ к данной СУБД, добавьте индекс к таблице X по полю date
скорость выполнения должна резко возрасти.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дата в DateTimePicker из БД SQL DirtyBASS C/C++ Базы данных 1 13.04.2012 17:20
дата в SQL novice2010 Помощь студентам 2 11.09.2010 08:06
Динамически увеличивающаяся дата в запросе SQL kivru Microsoft Office Access 1 07.12.2009 19:00
дата в SQL Arkuz БД в Delphi 7 04.11.2008 12:32
Дата (SQL + Delphi) Pinya БД в Delphi 3 10.10.2008 17:53