Abfrage zeilenweise auslesen mit While Result.Next

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Abfrage zeilenweise auslesen mit While Result.Next

Re: Abfrage zeilenweise auslesen mit While Result.Next

von NTClient » Do, 07.01.2021 11:24

Danke Robert für den Hinweis auf's Handbuch. Das bringt mich in der Tat Riesenschritte weiter!!
Danke F3K Total - Warum einfach, wenns auch umständlich geht :-) Genial!
Gruß Bernd!

Re: Abfrage zeilenweise auslesen mit While Result.Next

von F3K Total » Do, 07.01.2021 10:08

Moin,
warum einfach, wenn es auch kompliziert geht?
Mein Vorschlag, ohne Resultset, direkt in die Tabelle schreiben.

Code: Alles auswählen

KommandoInsert = "INSERT INTO """& TabName & """ (""Col1"", ""Col2"", ""Col3"")(SELECT  ""zu MiA"", ""AZSollDec"", ""AZIstDec"" FROM ""ID_BuchungenKoGe"" WHERE ""zu MiA"" =" & MA & " AND ""Datum"" between '" & ab_Datum & "' and '" & bis_Datum & "')"
SQLStatement.executeUpdate (KommandoInsert)
Gruß R

Re: Abfrage zeilenweise auslesen mit While Result.Next

von RobertG » Mi, 06.01.2021 16:10

Hallo Bernd,

die Schleife läuft nur einmal ab, weil Du die Variable "Result" in der Schleife neu belegst. Auch das SQLStatement wird da wieder überschrieben. Das dürfte da aber nichts machen, da die Ergebnisse ja im Result-Objekt enthalten sind.

Das kannst Du umgehen, indem Du statt

Code: Alles auswählen

Result = SQLStatement.executeQuery(KommandoInsert)
ein

Code: Alles auswählen

SQLStatement.executeUpdate(KommandoInsert)
ausführst. Schließlich erwartest Du keine Abfrageergebnisse.

Das mit der Anzahl der Ergebnisse ist nicht so einfach. Dazu musst Du erst einmal den Resultset-Type umstellen und dann über

Code: Alles auswählen

DIM iResult AS LONG
IF oResult.last THEN
iResult = oResult.getRow
ELSE
iResult = 0
END IF
die letzte Zeile ermitteln.

Steht alles im Handbuch.

Gruß

Robert

Abfrage zeilenweise auslesen mit While Result.Next

von NTClient » Mi, 06.01.2021 13:42

Hallo zusammen,

Mit folgender Code will ich den Inhalt einer Abfrage zeilenweise in eine neue Tabelle schreiben:

Code: Alles auswählen


sql= "SELECT  ""zu MiA"", ""AZSollDec"", ""AZIstDec"", FROM ""ID_BuchungenKoGe"" WHERE ""zu MiA"" =" & MA & " AND ""Datum"" between '" & ab_Datum & "' and '" & bis_Datum & "'"
Result = SQLStatement.executeQuery(sql)
n_spalte=Result.columns.count
' n_zeile=Result.rows.count (Methode nicht gefunden)
While Result.Next ()
	Wert1 = Result.getInt ( 1 )
	Wert2 = Result.getFloat ( 2 )
	Wert3 = Result.getFloat ( 3 )
	KommandoInsert = "INSERT INTO """& TabName & """ (""Col1"", ""Col2"", ""Col3"") VALUES (" & Wert1 & ", " & Wert2 & ", " & Wert3 & ", " & ")"
	Result=SQLStatement.executeQuery (KommandoInsert)
WEnd
Frage:
1. Wie bekomme ich die Anzahl der Zeilen der Abfrage? Die Methode Result.columns.count für die Spalten funktioniert. Die Methode Result.rows.count funktioniert nicht :-(
2. Die While-Next-Schleife läuft nur einmal und zwar für die erste Zeile der Abfrage durch. Sie müßte aber n_zeile mal durchlaufen. Geht doch irgendwie, oder?

Gruß Bernd!

Nach oben