![]() |
Datenbank: Access • Version: 2003 • Zugriff über: ADO
EXECSQL und Next
Hallo zusammen,
ich habe ein Problem im ExecSql und einem folgenden AdoQuery.next. Fehler Meldung : Operation bei geschlossener Datenmenge nicht möglich. Bei einem vorgelagerten AdoQuery.open bekäme ich die Fehlermeldung ""Der aktuelle Provider unterstützt nicht die Wiedergabe mehrfacher Recordsets bei einer einzelnen Ausführung" Ich will nach dem ersten Datensatz in der Query den nächsten verarbeiten, und dies gelingt mir einfach nicht. Jemand ne Idee? Danke.
Delphi-Quellcode:
{Query nach Countabfrage neu füllen}
adoquerydruck.active:=false; adoquerydruck.sql.Clear; adoquerydruck.sql.text := 'SELECT * FROM qryDruck'; adoquerydruck.Open; adoquerydruck.First; While Not ADOQuerydruck.Eof do begin {Typ bestimmen} cltype := adoquerydruck.FieldByName('TYP').AsString; selectedid := adoquerydruck.FieldByName('Zahl').AsInteger; {Felder aus der INI lesen} IniFile := TIniFile.create(GetIniFilename); try clprintfields := IniFile.ReadString ('CLTYPES',cltype,''); finally inifile.Free; end; {Printfields zusammensetzen / CL-Felder mit Stammdaten} Printfields := 'Name,Kundennummer,Strasse,Ort,PLZ,Fax,Telefon,EMail,Zahl,Kommission,'+clprintfields; {Felder aus der INI in ein SELECT bügeln} adoquerydruck.Active := true; adoquerydruck.sql.Clear; adoquerydruck.sql.text := 'insert into tempdruck ('+printfields+') SELECT '+printfields+' FROM qryDruck where zahl ='+inttostr(selectedid); adoquerydruck.ExecSQL; adoquerydruck.Next; //Da kracht es !! end; |
Re: EXECSQL und Next
Zitat:
wozu das 'next' - das wäre doch nur bei einem SELECT nötig |
Re: EXECSQL und Next
Erstelle eine 2. Query für die Datenmanipulation.
|
Re: EXECSQL und Next
Zitat:
|
Re: EXECSQL und Next
Zitat:
|
Re: EXECSQL und Next
Entweder habe ich etwas falsch gemacht, oder die Problematik bleibt die selbige.
Bei einem AdoQuery.open kommt : "Der aktuelle Provider unterstützt nicht die Wiedergabe mehrfacher Recordsets bei einer einzelnen Ausführung Bei einem AdoQuery.next : "Operation bei geschlossener Datenmenge nicht ausführbar" |
Re: EXECSQL und Next
Wie sieht der Quelltext aus?
|
Re: EXECSQL und Next
Delphi-Quellcode:
{Query nach Countabfrage neu füllen}
adoquerydruck.active:=false; adoquerydruck.sql.Clear; adoquerydruck.sql.text := 'SELECT * FROM qryDruck'; adoquerydruck.Open; //for I := 0 to quanta - 1 do begin {Die Anzahl der Bestellungen durchlaufen} While Not ADOQuerydruck.Eof do begin {Linsentyp bestimmen} cltype := adoquerydruck.FieldByName('TYP').AsString; selectedid := adoquerydruck.FieldByName('Zahl').AsInteger; {Felder aus der INI lesen} IniFile := TIniFile.create(GetIniFilename); try clprintfields := IniFile.ReadString ('CLTYPES',cltype,''); finally inifile.Free; end; {Printfields zusammensetzen / CL-Felder mit Stammdaten} Printfields := 'Name,Kundennummer,Strasse,Ort,PLZ,Fax,Telefon,EMail,Zahl,Kommission,'+clprintfields; {Felder aus der INI in ein SELECT bügeln / Stammdaten nicht vergessen} adoquerytemp.Active := true; adoquerytemp.sql.Clear; adoquerytemp.sql.text := 'insert into tempdruck ('+printfields+') SELECT '+printfields+' FROM qryDruck where zahl ='+inttostr(selectedid); adoquerytemp.ExecSQL; adoquerytemp.Next; end; {For I} |
Re: EXECSQL und Next
Statt
Delphi-Quellcode:
meinst du glaub ich
adoquerytemp.Next;
Delphi-Quellcode:
Schließlich willst du durch deine Suchschleife laufen...
adoquerydruck.Next;
|
Re: EXECSQL und Next
Außerdem wäre es evtl. sinnvoller, mit SQL_Parametern zu arbeiten.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz