Цитата из базы наний (скачаный вариант, на сайте этого примечания ненашел):
Цитата:
.....
Взято с http://delphiworld.narod.ru
Примечание Vit: я привёл этот код так как он был на сайте и его правильность целиком на совести автора. Однако приведенный код полон неточностей и могут быть проблемы при его выполнении. Давайте разберём что здесь не так и как сделать его работающим:
Code:
function TdmR3.GetCountForPeriod(LastDate: TDateTime; IsPlan: boolean): Integer;
var qu: TADOQuery;
S: string;
begin
{©Drkb v.3(2007): www.drkb.ru,
®Vit (Vitaly Nevzorov) - nevzorov@yahoo.com}
qu := TADOQuery.Create(nil);
try
// S := FormatDateTime('dd.mm.yy', LastDate); нам не нужна эта строка
qu.ConnectionString := Format(CONECT_STR, [db_file]); //Delphi автоматически приводит тип String в WideString
qu.SQL.Text := 'select count(*) from DecadaVal as d where d.LastDate=:LastDate and IsPlan=:IsPlan';
//Дельфи вовсе не автоматом распознает параметры, мы должны заставить его правильно провести парсинг параметров, для чего и служит следующая строка:
qu.Parameters.ParseSQL(qu.SQL.Text, true); //если кверя создана в дизайне и текст SQL присвоен в дизайне то эта строка не понадобится
// я предпочитаю обращаться к параметрам по имени, это избавит от многочисленных и сложных в отладке ошибок
qu.Parameters.ParamByName('LastDate').Value := LastDate;
qu.Parameters.ParamByName('IsPlan').Value := IsPlan;
qu.Open;
Result := qu.Fields[0].AsInteger;
finally
qu.Free;
end;
end;
|