![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Траблы с ADOQuery, помогите плиз [D6, Access]
pashaz © (2004-05-23 20:10:00)Нужно: узнать значение последней записи определённого поля в базе на дату сегодня - 1 (то есть вчера).
Пишу:
with ADOQuery1 do
begin
Active:=False;
SQL.Clear;
SQL.Add('select inv from return where today = :prev');
ParamCheck:=True;
Parameters.ParamByName('prev').Value:=IncDay(Now, -1);
Open;
Last;
end;
Label31.Caption:=ADOQuery1.Fields[0].AsString;
И ничего не получаю (записи точно есть.)
sniknik (2004-05-23 23:08:00) [1]> Нужно: узнать значение последней записи определённого поля в базе на дату сегодня - 1 (то есть вчера).
SQL.Add(
'select top 1 inv from return where today between Date()-1 and Date() order by today desc'
);
запрос именно на то что требуется, последняя запись на вчера, с условием что в today вносилось значение detetime, а не чистая дата тогда неопределено.
Vlad (2004-05-23 20:52:00) [2]
> pashaz © (23.05.04 20:50) [13]
> to Vlad
>
> Пробовал.
>
> ощибка возникает при выполнении запроса.
мистика
pashaz (2004-05-23 20:50:00) [3]to Vlad
Пробовал.
ощибка возникает при выполнении запроса.
pashaz (2004-05-23 20:49:00) [4]Действительно, спасибо.
написал Parameters.ParamByName('prev').Value:=IncDay(Date, -1);
всё заработало.
Vlad (2004-05-23 20:48:00) [5]
> pashaz © (23.05.04 20:43) [9]
1) Еще раз спрашиваю, пробовал ли ты вариант Vlad © (23.05.04 20:15) [1]
2) Ну и в какой же строчке в приведенном коде возникает ошибка ?
Anatoly Podgoretsky (2004-05-23 20:46:00) [6]Ты что именно так и хранишь, с точностью до миллисекунд?
Now именно такое
pashaz (2004-05-23 20:43:00) [7]Пробовал. "Data type mismatch in criteria expression"
procedure TForm2.LMDButtonBar1SectionChanged(Sender: TObject;
CurrentSection, OldSection: Integer);
begin
if CurrentSection=2 then
begin
LMDPanelFill2.Hide;
LMDPanelFill3.Hide;
LMDPanelFill5.Show;
LMDPanelFill4.Hide;
LMDPanelFill1.Hide;
LMDMaskEdit3.Text:=DateToStr(Now);
with ADOQuery1 do
begin
Active:=False;
SQL.Clear;
SQL.Add('select inv from return where today = :prev');
ParamCheck:=True;
Parameters.ParamByName('prev').Value:=IncDay(Now, -1);
Open;
Last;
end;
// Label31.Caption:=FloatToStr(ADOQuery1.Fields[0].AsFloat);
Label31.Caption:=ADOQuery1.Fields[0].AsString;
Label29.Caption:=DateToStr(IncDay(Now, -1));
with ADODataSet7 do
begin
Close;
CommandType:=cmdText;
CommandText:='select * from return where today= :temp';
Parameters.ParamByName('temp').Value:=StrToDate(LMDMaskEdit3.Text);
Open;
end;
end;
end;
Vlad (2004-05-23 20:35:00) [8]
> pashaz © (23.05.04 20:30) [6]
1) Вариант Vlad © (23.05.04 20:15) [1] пробовал ?
2) Приведи полный код, чушь какая-то, не могет такого быть.
pashaz (2004-05-23 20:32:00) [9]Но что характерно, написал
Label29.Caption:=DateToStr(IncDay(Now, -1));
и действительно получаю 22.05.2004 Вообще ничего не понимаю
pashaz (2004-05-23 20:30:00) [10]да ето я ошибся. пишу trunc(IncDay(Now, -1)). выдаёт ошибку
Vlad (2004-05-23 20:28:00) [11]
> pashaz © (23.05.04 20:25) [4]
Согласно твоему примеру из хелпа должен работать !
Правда не так:
> Trunc(IncDay(Now-1)) - не работает ((
а так:
> trunc(IncDay(Now, -1))
pashaz (2004-05-23 20:25:00) [12]Trunc(IncDay(Now-1)) - не работает ((
"Data type mismatch in criteria expression"
Vlad (2004-05-23 20:20:00) [13]
> pashaz © (23.05.04 20:18) [2]
Это наверное в D6 только появилось, а у меня D5
Ну ладно.
Скорее всего проблема в том, что ты передаешь дату со временем, то есть нужно отрезать время.
Для этого либо используй вариант Vlad © (23.05.04 20:15) [1]
либо trunc(IncDay(Now, -1))
pashaz (2004-05-23 20:18:00) [14]Returns a date shifted by a specified number of days.
Unit
DateUtils
Category
date/time routines
function IncDay(const AValue: TDateTime; const ANumberOfDays: Integer = 1): TDateTime;
Description
IncDay returns the value of the AValue parameter, incremented by ANumberOfDays days. ANumberOfDays can be negative, to return a date N days previous.
The time of day specified by the AValue parameter is copied to the result.
Vlad (2004-05-23 20:15:00) [15]Сорри, а что такое IncDay ?
может так:
Parameters.ParamByName('prev').Value := (Date - 1);