Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.13;
Скачать: CL | DM;

Вниз

Траблы с ADOQuery, помогите плиз   Найти похожие ветки 

 
pashaz ©   (2004-05-23 20:10) [0]

Нужно:  узнать значение последней записи определённого поля в базе на дату сегодня - 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;

И ничего не получаю (записи точно есть.)


 
Vlad ©   (2004-05-23 20:15) [1]

Сорри, а что такое IncDay ?

может так:
Parameters.ParamByName("prev").Value := (Date - 1);


 
pashaz ©   (2004-05-23 20:18) [2]

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:20) [3]


> 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:25) [4]

Trunc(IncDay(Now-1)) - не работает ((

"Data type mismatch in criteria expression"


 
Vlad ©   (2004-05-23 20:28) [5]


> pashaz ©   (23.05.04 20:25) [4]

Согласно твоему примеру из хелпа должен работать !
Правда не так:

> Trunc(IncDay(Now-1)) - не работает ((

а так:

> trunc(IncDay(Now, -1))


 
pashaz ©   (2004-05-23 20:30) [6]

да ето я ошибся. пишу trunc(IncDay(Now, -1)). выдаёт ошибку


 
pashaz ©   (2004-05-23 20:32) [7]

Но что характерно, написал

Label29.Caption:=DateToStr(IncDay(Now, -1));

и действительно получаю 22.05.2004   Вообще ничего не понимаю


 
Vlad ©   (2004-05-23 20:35) [8]


> pashaz ©   (23.05.04 20:30) [6]

1) Вариант Vlad ©   (23.05.04 20:15) [1]  пробовал ?
2) Приведи полный код, чушь какая-то, не могет такого быть.


 
pashaz ©   (2004-05-23 20:43) [9]

Пробовал. "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;


 
Anatoly Podgoretsky ©   (2004-05-23 20:46) [10]

Ты что именно так и хранишь, с точностью до миллисекунд?
Now именно такое


 
Vlad ©   (2004-05-23 20:48) [11]


> pashaz ©   (23.05.04 20:43) [9]


1) Еще раз спрашиваю, пробовал ли ты вариант Vlad ©   (23.05.04 20:15) [1]  
2) Ну и в какой же строчке в приведенном коде возникает ошибка ?


 
pashaz ©   (2004-05-23 20:49) [12]

Действительно, спасибо.

написал Parameters.ParamByName("prev").Value:=IncDay(Date, -1);

всё заработало.


 
pashaz ©   (2004-05-23 20:50) [13]

to Vlad

Пробовал.

ощибка возникает при выполнении запроса.


 
Vlad ©   (2004-05-23 20:52) [14]


> pashaz ©   (23.05.04 20:50) [13]
> to Vlad
>
> Пробовал.
>
> ощибка возникает при выполнении запроса.


мистика


 
sniknik ©   (2004-05-23 23:08) [15]

> Нужно:  узнать значение последней записи определённого поля в базе на дату сегодня - 1 (то есть вчера).
SQL.Add(
"select top 1 inv from return where today between Date()-1 and Date() order by today desc"
);
запрос именно на то что требуется, последняя запись на вчера, с условием что в today вносилось значение detetime, а не чистая дата тогда неопределено.



Страницы: 1 вся ветка

Текущий архив: 2004.06.13;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.06 c
14-1085575633
AlexG
2004-05-26 16:47
2004.06.13
Давайте разберемся....


6-1082878311
барбос
2004-04-25 11:31
2004.06.13
Как добавить ,библиотеку (MSHTML_TLB) как ActiveX, в секцию uses?


14-1085391291
VID
2004-05-24 13:34
2004.06.13
парсеры...


14-1085510987
i-s-v
2004-05-25 22:49
2004.06.13
Торба.Ком перестанет существовать


1-1086114084
Дана
2004-06-01 22:21
2004.06.13
Изменение размера bitmapa при resize формы