Текущий архив: 2006.10.08;
Скачать: CL | DM;
ВнизОшибка при вызове ADOQuery Найти похожие ветки
← →
al_tor (2006-08-09 08:46) [0]Имеется следующая финкция
function TForm1.OstCl(SAcc:String):Real;
Var SQL_K: TStringList;
begin
SQL_K:=TStringList.Create;
ADOQDBF.Active:=False;
SQL_K.ADD("SELECT * FROM BILLOST");
SQL_K.ADD("WHERE BILL_KL="""+SAcc+"""");
ADOQDBF.Active:=TRUE;
if ADOQDBF.RecordCount<>0 then
begin
ADOQDBF.First;
Result:=ADOQDBF.FieldValues["SUM_OST"];
end
else Result:=0;
ADOQDBF.Active:=False;
end;
ADOCDBF: TADOConnection;
ADOQDBF: TADOQuery;
ADOCDBF.ConnectionString= "Provider=VFPOLEDB.1;Data Source=C:\Program Files\Borland\Delphi7\Projects\VipMon;Password="";Collating Sequence=MACHINE"
Функция вызывается в цикле. Во время второго
запуска - вываливается ошибка "Текущий
проводник не поддерживает возврат нескольких
наборов записей в результате одной операции"
Подскажите, пожалуйста, где я ошибся.
← →
Sergey13 © (2006-08-09 08:55) [1]Не понял, зачем писать запрос в какую-то переменную, а не в свойство кверика?
← →
al_tor (2006-08-09 09:01) [2]Это "хвосты" остались. Вылетает все равно в строке "ADOQDBF.Active:=TRUE;"
← →
al_tor (2006-08-09 09:08) [3]Все, понял - я перед каждым следующим вызове ADOQDBF.SQL не очищал, а пихал туда новый запрос.
← →
Sergey13 © (2006-08-09 09:09) [4]> [2] al_tor (09.08.06 09:01)
Ты предлагаешь нам твои хвосты обрубать?
> Вылетает все равно в строке "ADOQDBF.Active:=TRUE;"
Потому, что текста запроса в нем нет, подозреваю.
← →
ANB © (2006-08-09 09:31) [5]
> Потому, что текста запроса в нем нет, подозреваю.
Потому, что на следующем проходе там уже 2 запроса :)
← →
MsGuns © (2006-08-09 16:48) [6]Вместо зубодробительного
SQL_K.ADD("SELECT * FROM BILLOST");
SQL_K.ADD("WHERE BILL_KL="""+SAcc+"""");
следует писать по-грамотному:
with ADOQDBF do
try
if Active then Close;
SQL.Text := "SELECT * FROM BILLOST WHERE BILL_KL=:psacc";
Parameters.ParamByName("psacc").Value := SAcc;
Open;
FetchAll; // Может быть нужен, если НД не отображается
if RecordCount>0 then
....
Close;
except
ShowMessage("Не сложилось ;(");
end;
И еще. Созданные в ране списки, ка и прочие объекты, под которые выделяются ресурсы, надо прибивать перед выходом из процедур (закрытии форм) в обязательном порядке !
Страницы: 1 вся ветка
Текущий архив: 2006.10.08;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.042 c