Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Вниз

Траблы с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.051 c
1-1085918737
Knoxville
2004-05-30 16:05
2004.06.13
Manifest для TBitBtn


3-1085050844
Draught
2004-05-20 15:00
2004.06.13
DBComboBox или DBLookupComboBox


1-1086077343
Oyster
2004-06-01 12:09
2004.06.13
Поиск в TMemo


1-1086124481
SMART_n
2004-06-02 01:14
2004.06.13
MDI с приложениями


14-1085410435
SPeller
2004-05-24 18:53
2004.06.13
Не пейте за рулём.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский