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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2009, 15:49   #1
Serval
Пользователь
 
Регистрация: 20.01.2009
Сообщений: 26
По умолчанию SQL запрос - проблема с датой

В QueryAnalyser запрос выглядит так

SELECT AVG(Val)
FROM Temp
WHERE (Id = 18) AND (DT BETWEEN '11.03.2008 0:00:00' AND '11.03.2008 00:59:59')

мне нужно его выполнить в дельфи так чтобы вместо '11.03.2008 0:00:00'
вставить переменные - как не пробовал все ругаеться на дату и время.
Serval вне форума Ответить с цитированием
Старый 21.01.2009, 16:01   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

попробуй через свойство Parameters если компонент его поддерживает.
А кстати вместо ' попробуй поставь "
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.01.2009, 19:35   #3
Serval
Пользователь
 
Регистрация: 20.01.2009
Сообщений: 26
По умолчанию

Код:
procedure TForm3.BitBtn2Click(Sender: TObject);
var   I : Integer;
  D : TDateTime;
  dd: TDateTime;
  dat : Integer;
  SL1: TStringList;
begin
edit1.Text:=datetostr(datetimepicker1.Date);//
edit2.Text:=datetostr(datetimepicker2.Date);//это для проверки пока код неотлажен
if datetimepicker1.Date>datetimepicker2.Date then showmessage ('Конечная дата неможет быть больше начальной');
dd:= trunc(DateTimePicker2.Date-DateTimePicker1.Date);
D := DateTimePicker1.DateTime;
StringGrid1.RowCount:=trunc(dd+1);
  For I := 1 To trunc(dd+1) Do
    Begin
        for dat:= 0 to 23 do
        begin
          try
            while form3.query1.Active do
              Application.ProcessMessages;
            with form3.query1 do
            try
              Close;
              Query1.ParamByName('D1').AsDateTime:=D;
              Query1.ParamByName('D2').AsDateTime:=D+(1/24);
              Open;
              StringGrid1.RowCount:=dat+1;
              StringGrid1.ColCount:=i;
              StringGrid1.Cells[i-1,dat]:=FieldByName('val').AsString;
             while not Eof do
              begin
                 SL1:= TStringList.Create;
                 SL1.Add(FieldByName('val').AsString);
                 memo1.Lines.Add(FieldByName('val').AsString); //для проверки что оно вообще выдаст
                 Next;
              end;
            except

            end;
            finally
              form3.query1.Close;
            end;
         end;
      D := D + 1;
      showmessage('');
    End;
end;
сделал так оно мне выдает пустые значения - запрос сделал как посоветовали - немогу понять что нетак опять делаю.
обращаться и как AsString и как AsDateTime пробовал

запрос сделал так
Код:
SELECT     AVG(Val)
FROM         Temp
WHERE     (Id = 18) AND (DT BETWEEN :D1 AND :D2)

Последний раз редактировалось Serval; 22.01.2009 в 19:37. Причина: добавил как сделан запрос
Serval вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно составить запрос с датой и временем! student90 БД в Delphi 5 26.09.2008 05:43
SQL запрос Dux БД в Delphi 5 27.08.2008 13:36
Sql запрос из бд Novi4ek Помощь студентам 4 20.05.2008 14:04
SQL запрос SERG1980 БД в Delphi 6 19.10.2007 23:03
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15