Witam, W Lazarusie przy zapytaniach mam problem z automatycznym Close komponentu SQLQuery.
Kod wygląda następująco:
SQLQueryFunkcje.SQL.Clear;
SQLQueryFunkcje.SQL.Add('select A.nr_wz,B.data_wystawienia from sprzedaz_dane A left outer join wz_dane B on(A.id_dane_wz=B.id) where A.nr_wz is not null and A.nr_fv is null and A.anulowano is null');
SQLQueryFunkcje.Open;
while not SQLQueryFunkcje.Eof do
begin
DecodeDateFully(SQLQueryFunkcje.FieldByName('data_wystawienia').AsDateTime,R,M,D,DT);
if M<Mnow then
begin
if Length(MsgAlarm1)=0 then
begin
MsgAlarm1:=' ! Z poprzeniego miesiąca niezafakturowano Wz: '+SQLQueryFunkcje.FieldByName('nr_wz').AsString;
end else
begin
MsgAlarm1:=MsgAlarm1+', '+SQLQueryFunkcje.FieldByName('nr_wz').AsString;
end;
end;
SQLQueryFunkcje.Next;
end;
if Length(MsgAlarm1)>0 then
begin
Priorytet:=2;
MsgAlarm1:=MsgAlarm1+'. Należy zmienieć datę systemową i zafakturować !'
end;
if Length(MsgInfo1)>0 then
begin
<u> //SQLQueryFunkcje.Close; ---- JEŻELI TU JEST CLOSE PROBLEM ZNIKA</u>
DecodeDateFully(DataDzis,R,M,D,DT);
SQLQueryFunkcje.SQL.Clear;
SQLQueryFunkcje.SQL.Add('select count(nr_sprzedazy) ilosc from sprzedaz_dane where nr_wz is not null and nr_fv is null and anulowano is null');
SQLQueryFunkcje.Open;
if SQLQueryFunkcje.FieldByName('ilosc').AsInteger=0 then //jezeli wszystko zafakturowane - czyszczenie tresci komunikatu MsgInfo1 - utworzonego domyslnie .
MsgInfo1:='';
end;
Jeżeli nie zamknę SQLQueryFunkcje ręcznie pojawia się błąd po uruchomieniu procedury: SQLQueryFunkcje : Field not found : "ilosc".
Pod Delphi ten kod działa poprawnie.