Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Ошибка в SQL запросе


Автор: Berliner 3.10.2005, 10:22

Вот так вот работает
Код


procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * from Rates where  ActionID=303 and  DayDate = ' + IntToStr(DelphiToSQLDate(DateTimePicker1.DateTime)) );
//adOQuery1.SQL.Add('Select * from rates');
ADOQuery1.Open;
Euro1:=Form1.ADOQuery1.FieldbyName('IniNum').AsString;
Euro2:=Form1.ADOQuery1.FieldbyName('IniDen').AsString;
Form1.Edit1.Text:=FloatTostr((StrToFloat(Euro1))/(StrToFloat(euro2)));
end;



когда добавил еще одно условие то не работает! CurrencyTag='Eur'
Код


ADOQuery1.SQL.Add('Select * from Rates where CurrencyTag='Eur' and  ActionID=303 and  DayDate = ' + IntToStr(DelphiToSQLDate(DateTimePicker1.DateTime)) );



подскажите пожалуста в чем проблема

Автор: Bes 3.10.2005, 10:34
Я конечно не знаю что там за спецФункция
DelphiToSQLDate
и тем более зачем команда IntToStr но предположим даже все правильно, тогда единственное предположение:
Просто нет записей, удовлетворяющих такому условию!!!
А я бы порекомендовал использовать парамтры - проще и надежнее.

Автор: Berliner 3.10.2005, 11:23
Записи есть!


Код

function DelphiToSQldate(scDate:TDateTime):longint;
begin
Result:=Round(Int(scDate))-2;
end;



Я думаю там что то с кавычками одинарными

Автор: bas 3.10.2005, 11:48
Цитата(Berliner @ 3.10.2005, 11:23)
Я думаю там что то с кавычками одинарными

Явно в этом месте
Цитата(Berliner @ 3.10.2005, 10:22)
CurrencyTag='Eur'


Автор: Bes 3.10.2005, 11:49
Да вообще хрень какая-то. напиши так:

Код

ADOQuery1.SQL.Text:='Select * from Rates where CurrencyTag= :CT and  ActionID= :Aid and  DayDate = :DT';
ADOQuery1.Parametrs[0].value:='Eur';
ADOQuery1.Parametrs[1].value:=303;
ADOQuery1.Parametrs[2].value:=DateTimePicker1.Date;


И будет тебе счастье.
А вообще дата конечно указывается в кавычках.
Ну и конечно нюанс что у тебя в поле ДэйДата, потому что там со временем данные или только дни....

Автор: Vet 4.10.2005, 18:10
Цитата
Я думаю там что то с кавычками одинарными

Код

 ADOQuery1.SQL.Add('Select * from Rates where CurrencyTag='Eur' and  ActionID=303 and  DayDate = ' + IntToStr(DelphiToSQLDate(DateTimePicker1.DateTime)) );

Так это же у тебя даже не скомпилируется!
Напиши:
Код

 ADOQuery1.SQL.Add('Select * from Rates where CurrencyTag=' + #39 + 'Eur' + #39 + ' and  ActionID=303 and DayDate = ' + IntToStr(DelphiToSQLDate(DateTimePicker1.DateTime)) );

Цитата
И будет тебе счастье
smile

Автор: Berliner 5.10.2005, 13:47
спасиб за подсказки

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)