![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() В 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' вставить переменные - как не пробовал все ругаеться ![]() |
#2
|
|||
|
|||
![]() Код:
SELECT AVG(Val) FROM Temp WHERE (Id = 18) AND (DT BETWEEN :D1 AND :D2) Так не пробовал? А из кода обращаться к параметрам D1 и D2 через AsDateTime |
#3
|
|||
|
|||
![]() Код:
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 пробовал |
#4
|
|||
|
|||
![]() Перепиши все-таки запрос на больше-меньше.
Код:
SELECT AVG(Val) FROM Temp WHERE (Id = 18) AND ((DT >= :D1 AND DT <= :D2)) Да, в зависимости от БД может потребоваться вставить конвертацию. |
#5
|
|||
|
|||
![]() спасибо, попробую
использую MS SQL server 2000 запросы BDE |