![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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 |