SQL Befehl in Visual Basic 6.0

itsection

Mitglied
Hallöchen,

ich habe da ein paar Probleme.
Also ich habe da eine Datenbank (database.mdb) die drei Tabellen hat (Mitarbeiter, Arbeitsort und WerWoWannWieviel).
In der Tabelle Mitarbeiter sind die ganzen Miterabeiterdaten enthalten also zum Beispiel, Nachname, Vorname, Adresse und so weiter.
In der Tabelle Arbeistort sind dann die Arbeitsorte enthalten.
Die Tabelle WerWoWannWieviel enthält folgende Felder:

Datum
Nachname
Vorname
Arbeitsort
Betrag

Der Nachname, Vorname und der Arbeitsort werden aus den zwei anderen Tabellen geholt. Dann kann man das Datum und den Betrag noch zusätzlich eingeben.
Nun kann ich mit folgendem SQL-Befehl
SELECT Datum, Arbeitsort, SUM (Betrag) AS Gesamtbetrag FROM WerWoWannWieviel GROUP BY Datum, Arbeitsort
die Beträge addieren, die am selben Tag am selben Arbeitsort reingekommen sind.
Mit Hilfe des Visual Data Manager funktioniert dieser SQL-Befehl auch. Doch jetzt will ich diesen Befehl, also somit die zusammengezählten Beiträge in einen String speichern, meinetwegen auch in einem Double, wenn dass besser ist.
Wie kann ich dass denn im Visual Basic machen? Wie muß denn der Quelltext dazu aussehen. Das ganze soll dann innerhalb des folgenden Quelltextes geschehen:

Private Sub Command1_Click()
Dim Eingabe1 As String
Dim Eingabe2 As String
Dim SQLKommando As String
Eingabe1 = Textfeld1.Text
Eingabe2 = Textfeld3.Text

...
End Sub

Der String "SQLKommando" soll dann den addierten Betrag enthalten. Ich habe da schon ein bisschen rum experimentiert und habe es mit folgendem Code probiert:

Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset

Dim SQLKommando As String
Set Rs = New ADODB.Recordset
Set Cn = New ADODB.Connection
SQLKommando = "SELECT Datum, Arbeitsort, SUM (Betrag) AS " & _
"Gesamtbetrag FROM WerWoWannWieviel GROUP BY Datum, Arbeitsort"
With Cn
.Provider = "Microsoft.Jet.OLEDB.3.51;"
.ConnectionString = "C:\pfad\database.mdb"
.Open
End With
With Rs
.Source = SQLKommando
.ActiveConnection = Cn
.Open
End With
Textfeld9.Text = "Der gesammt Betrag ist: " & _
Rs.Fields("Betrag").Value & " Euro"

Rs.Close
Cn.Close

Nun würde der Betrag nicht in einen String gespeichert, sondern gleich in ein Textfeld schreiben, was ich eigentlich auch will.
Aber das klappt nicht so ganz. Irgendetwas stimmt da nicht, kommt immer folgende Fehlermeldung:

Laufzeitfehler '3265'
Ein Objekt, das dem angeforderten Namen oder dem Ordinalverweis entspricht, kann nicht gefunden werden.

Kann mir da bitte jemand helfen und evtl. den richtigen Code hinschreiben?

Ich muß dazu sagen das ich ein Anfänger bin, der noch nicht soviel mit Visual Basic gearbeitet hat.

Grüssle und einen großen Dank im voraus
Christian
 
Probier das mal so:
Code:
'Variablen
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim SQLKommando As String

'Objekte erstellen
Set Rs = New ADODB.Recordset
Set Cn = New ADODB.Connection

'Abfrage erstellen
SQLKommando = "SELECT Datum, Arbeitsort, SUM (Betrag) AS Gesamtbetrag FROM WerWoWannWieviel GROUP BY Datum, Arbeitsort"
'Verbindung öffnen
Cn.Open "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=database.mdb"
End With
Rs.Open SQLKommando, Cn
Textfeld9.Text = "Der gesammt Betrag ist: " & CStr(Rs.Fields("Gesamtbetrag")) & " Euro"

'Objekte schließen
Rs.Close
Cn.Close

'Objekte zerstören
Set Rs = Nothing
Set Cn = Nothing

Wenn Du in der Abfrage dem Feld ein Alias ("Betrag As Gesamtbetrag") gibst, also anders benennst, dann musst Du auch auf den angepassten Feldnamen zugreifen.
 
Hi Lirion,

ersteinmal vielen Dank für die schnelle Antwort.
Ok, war logisch. Das mit dem AS Gesamtbetrag. Danke, ich wäre da glaube ich nie draufgekommen.

Aber ich habe nochmal eine Frage.
Mit diesem SQL-Befehl:
SELECT Datum, Arbeitsort, SUM (Betrag) AS Gesamtbetrag FROM WerWoWannWieviel GROUP BY Datum, Arbeitsort
kann ich ja nicht abfragen welches Datum er mir Zusammenfassen soll.
Gibt es eine Möglichkeit anstatt dem "GROUP BY Datum, Arbeitsort" einen anderen String hinzugeben? Also wie folgt?
SELECT Datum, Arbeitsort, SUM (Betrag) AS Gesamtbetrag FROM WerWoWannWieviel GROUP BY Datumstring, Arbeitsortstring
Wobei dann der Datumsstring dann zum Beispiel 25.04.2003 ist.
Also der SQL-Befehl sollte dann praktisch alle Beträge addieren, die zum Beispiel am "25.04.2003" an einem bestimmten Arbeitsort, zum Beispiel "Kasse1" eingenommen worden sind.

Würde das irgendwie gehen? Also vielleicht so?

SQLKommando = "SELECT Datum, Arbeitsort, SUM (Betrag) AS Gesamtbetrag FROM WerWoWannWieviel GROUP BY " + Datumstring + ", " + Arbeitsort
Und der Datumsstring wäre dann "25.04.2003"
und der Arbeitsortstring wäre dann "Kasse1"

Grüssle
Christian
 
Zuletzt bearbeitet:
Zurück