Datenbank: oracle • Version: egal • Zugriff über: ADO / dbGo
Übergabe von Parameters "funktioniert nicht"
Hallo zusammen,
Bei dem folgenden Source funktioniert die Parameterübergabe nicht (lt. Debugger ist parameters.items[0] allerdings Liste1[i]). Die Bastellösung erbringt allerdings das gewünschte Ergebnis. Könnt Ihr mir auf die Sprünge helfen?
Delphi-Quellcode:
vielen Dank
liste1.LoadFromFile('c:\temp\update0a.txt');
ADOQuery1.Close; ADOQuery1.sql.Text:='select idebre from tabbre,tabpay '+ 'where tabbre.idepay=tabpay.idepay '+ 'and tabbre.numdlv=:_numdlv '; for i:=0 to liste1.Count-1 do begin ADOQuery1.parameters.parambyname('_numdlv').value:=liste1[i]; (* Bastellösung: ADOQuery1.sql.Text:='select idebre from tabbre,tabpay '+ 'where tabbre.idepay=tabpay.idepay '+ 'and tabbre.numdlv='''+liste1[i]+''''; *) ADOQuery1.open ; if not ADOQuery1.eof then begin inc(cnt1); repeat liste2.add(ADOQuery1.fieldbyname('idebre').asstring); ADOQuery1.next; until ADOQuery1.eof; end else begin inc(cnt2,1); liste2.Add(liste1[i]+' nicht gefunden!'); end; end; ADOQuery1.close; K-H |
AW: Übergabe von Parameters "funktioniert nicht"
Versuch mal, nach dem Neuzuweisen des SQL ".parameters.refresh" aufzurufen. Ich meine mich zu erinnern, dass die Parameterkollektion nach einer Zuweisung auf den SQL verworfen wird.
PMM |
AW: Übergabe von Parameters "funktioniert nicht"
@PMM
vielen Dank, aber das hat nichts gebracht, aber ich hab mir die Sourcen daraufin nochmal genau angeschaut, so funktioniert es:
Delphi-Quellcode:
liste1.LoadFromFile('c:\temp\update0a.txt');
ADOQuery1.Close; ADOQuery1.sql.Text:='select idebre from tabbre,tabpay '+ 'where tabbre.idepay=tabpay.idepay '+ 'and tabbre.numdlv=:_numdlv '; for i:=0 to liste1.Count-1 do begin ADOQuery1.parameters.parambyname('_numdlv').value:=liste1[i]; (* Bastellösung: ADOQuery1.sql.Text:='select idebre from tabbre,tabpay '+ 'where tabbre.idepay=tabpay.idepay '+ 'and tabbre.numdlv='''+liste1[i]+''''; *) ADOQuery1.open ; if not ADOQuery1.eof then begin inc(cnt1); repeat liste2.add(ADOQuery1.fieldbyname('idebre').asstring); ADOQuery1.next; until ADOQuery1.eof; end else begin inc(cnt2,1); liste2.Add(liste1[i]+' nicht gefunden!'); end; ADOQuery1.close; // muß in der Schleife erfolgen !!! end; |
AW: Übergabe von Parameters "funktioniert nicht"
Mal was anderes: wieso dieses Konstrukt?
Zitat:
Delphi-Quellcode:
while not ADOQuery1.eof do
begin inc(cnt1); liste2.add(ADOQuery1.fieldbyname('idebre').asstring); ADOQuery1.next; end; |
AW: Übergabe von Parameters "funktioniert nicht"
Gute Frage,
wahrscheinlich weil ich die Abfolge .Next; until .EOF; logisch finde. Übrigens ist in Deinem Beispiel die Zählung nicht mehr korrekt. Inc(cnt1) wird für jede Abfrage nur einmal ausgeführt, egal wieviele Datensätze zurück kommen. Gruß K-H |
AW: Übergabe von Parameters "funktioniert nicht"
Stimmt, das hatte ich übersehen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz