SQL-Abfrageergebnis in Variable übergeben

22/05/2008 - 20:56 von Hermann Splitthoff | Report spam
Hallo liebe Leute,

ich habe eine relativ lange Tabelle in Excel, die ich mittels eines
SQL-Strings in einem VBA-Code abfrage (Summenbildung und GROUP BY) und
über GetRows in ein anderes Tabellenblatt ausgebe. Den Ablauf
insgesamt habe ich verstanden, nach dem ich ziemlich lange daran
rumgebrütet habe. Das funktioniert auch.

Derzeit stehe ich wie ein Ochs' vor dem Berg, denn ich möchte nun eine
Variable füllen, in der der berechnete Wert einer Betragsspalte
abgelegt werden kann. Wie übergebe ich das betragsmàßige Ergebnis
einer SQL-Abfrage in die Variable, mit der ich dann weiterarbeiten
kann (z.B. in Zelle B5 ausgeben kann). Es wird nur ein Wert erzeugt.

Vorbereitet ist es so:

Sub Importdaten_Einzelergebnis()

Dim a As New ADODB.Connection
Dim b As New ADODB.Recordset

a.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
& '"Data-Source=" & Application.ActiveWorkbook.FullName &
";Extended Properties=Excel 8.0"

b.Open "SELECT tb.Konten, Sum(tb.Wert) FROM [tb$] GROUP BY tb.Konten
HAVING (((tb.Konten)P0001));", _
a, adOpenKeyset, adLockOptimistic

[ Ab hier weiß ich nicht weiter. Abgesehen davon, dass noch eine
Fehlermeldung kommt. Irgendwie fehlt das was,
denn der SQL-String wird noch angemeckert. In dem funktionierenden
Teil mußte der Tabellennamen mit dem Dollarzeichen erweitert werden.
Funzt aber im Moment noch nicht in dem jetzigen String.]

End Sub

Sofern die Abfrage durchlàuft: Wie übergebe ich das Ergebnis, welches
nur ein Wert ist, in eine Variable?

Ich hoffe, mir kann jemand weiterhelfen. Vielen Dank im voraus.

Schönen Gruß vom Niederrhein
Hermann Splitthoff
 

Lesen sie die antworten

#1 Peter Schleif
22/05/2008 - 21:25 | Warnen spam
Hermann Splitthoff schrieb am 22.05.2008 20:56:

& '"Data-Source=" & Application.ActiveWorkbook.FullName &


^^^
Apostroph muss weg.


b.Open "SELECT tb.Konten, Sum(tb.Wert) FROM [tb$] GROUP BY tb.Konten



Wofür das $ hinter tb?
Wofür die eckigen Klammern?

Wenn keine Leerzeichen im Tabellen/Feld-Namen sind, brauchst Du das nicht.


[ Ab hier weiß ich nicht weiter.



'Ungetestet unter der Annahme, das b ein gültiges Recordset liefert:

If Not b.EOF Then
MsgBox b.Fields(0) & vbTab & b.Fields(1)
End If


Oder mit "SELECT tb.Konten, Sum(tb.Wert) AS Summe ..."

MsgBox b.Fields("Konten") & vbTab & b.Fields("Summe")

Peter

Ähnliche fragen