![]() |
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.
|
Re: EXECSQL und Next
Zitat:
Delphi-Quellcode:
auf die Nase. Fehler : "Der aktuelle Provider unterstützt nicht die Wiedergabe mehrfacher Recordsets bei einer einzelnen Ausführung"
adoquerytemp.Active := true;
|
Re: EXECSQL und Next
Zitat:
|
Re: EXECSQL und Next
Zitat:
SQL-Code:
Ist das so möglich ???
insert into tempdruck Name,Kundennummer,Strasse,... SELECT tempdruck Name,Kundennummer,Strasse,... From ...
cya |
Re: EXECSQL und Next
Zitat:
|
Re: EXECSQL und Next
|
Re: EXECSQL und Next
Zitat:
Hast du mir noch ein Tipp, weshalb das Teil bei dem zweiten Durchlauf auf Nase fällt? Wenn ich das AdoQueryTemp.active vorlagere fällt er beim zweiten Durchlauf bei dem Sql Statement hin. Fehler beim INSERT INTO. Beim ersten Druchlauf nimmt er es ohen Probleme. |
Re: EXECSQL und Next
Der erste Datensatz wird geschrieben, beim zweiten knallt es dann.
Muss irgendetwas noch zuürcksetzen? |
Re: EXECSQL und Next
Kann ich den aktuellen Source nochmal sehen? IMO ist es doch unnötig, das Einfüge-Query auf Active zu setzen, da Du ja keine Datenmenge abfragst. Hier sollte ExecSQL doch ausreichen.
[edit] Und hier nochmal ein Beispielthread für SQL-Parameter mit ADO: ![]() |
Re: EXECSQL und Next
Hat sich erledigt. Hatte ein abschließendes "," zuviel in der Ini.
|
Re: EXECSQL und Next
Hallo,
sicher, dass es jetzt klappt ? Das
Delphi-Quellcode:
kannst du komplett weglassen.
adoquerytemp.Active := true;
Heiko |
Re: EXECSQL und Next
Ja, da hast du Recht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:16 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