SQL Statement auslösen und Ergebnis auslesen

Rico82

Grünschnabel
Hallo,
Ich möchte über ein Click-Ereignis eines Kombinationsfeldes ein SQL Statement absetzen und das Ergebnis dieser Abfrage (die erste Spalte = "Anzahl") im Kombinationsfeld eintragen. Über das Formular selbst funktioniert es, mit dem SQL Statement im Feld "Datensatzherkunft", warum nicht im VB Code, siehe unten? Wäre dankbar für jede Hilfe.

Visual Basic:
Private Sub Anzahl_SDM_Kombinationsfeld_Click()
Dim rs2 As Recordset
Dim sql2 As String
sql2 = "SELECT Count(tbl.SDM) AS Anzahl, tbl.SDM, tbl.Monat" & _
       "FROM tbl" & _
       "GROUP BY tbl.Monat, tbl.SDM" & _
       "HAVING ((Count(tbl.SDM)) >=2)"
Set rs2 = CurrentDb.OpenRecordset(sql2)
Me.Caption = rs2
End Sub
 
So wie ich das sehe übergibst du an Caption ja nicht nur ein Feld sondern das gesamte Recordset Objekt.

Weiß nicht um welche Datenbank es sich handelt aber es könnte in etwa so aussehen:

Visual Basic:
Me.Caption = rs2.fields("Anzahl")

Nachtrag: Vielleicht musst du vorher noch ein Refresh oder MoveFirst oder so ausführen damit du auch wirklich auf einen gültigen Datensatz zugreifst. Hängt aber wohl auch von der verwendeten Datenbank ab.
 
Zuletzt bearbeitet:
So wie ich das sehe übergibst du an Caption ja nicht nur ein Feld sondern das gesamte Recordset Objekt.

Weiß nicht um welche Datenbank es sich handelt aber es könnte in etwa so aussehen:

Visual Basic:
Me.Caption = rs2.fields("Anzahl")

Nachtrag: Vielleicht musst du vorher noch ein Refresh oder MoveFirst oder so ausführen damit du auch wirklich auf einen gültigen Datensatz zugreifst. Hängt aber wohl auch von der verwendeten Datenbank ab.

Danke für deine Antwort!
Ich arbeite mit einer Access DB. Den Zusatz im Code habe ich ausprobiert, leider erfolglos. Muss ich evtl. in den Objekteigenschaften des Kombinationsfeldes noch etwas ändern, z.bsp. von welchen Typ die Quelle ist (Tabelle/Abfrage; Wertliste; Feldliste) hab ich zur Auswahl.
Ich habe auch ein MoveFirst und Refresh folgend eingefügt:


Visual Basic:
Private Sub Anzahl_SDM_Kombinationsfeld_Click()
Me.Refresh
Dim rs2 As Recordset
Dim sql2 As String
sql2 = "SELECT Count(tbl.SDM) AS Anzahl, tbl.SDM, tbl.Monat" & _
       "FROM tbl" & _
       "GROUP BY tbl.Monat, tbl.SDM" & _
       "HAVING ((Count(tbl.SDM)) >=2)"
Set rs2 = CurrentDb.OpenRecordset(sql2)
Call rs2.MoveFirst
Me.Caption = rs2.Fields("Anzahl")
End Sub
 
Was ich gerade gesehen habe. Du schreibst du willst den Feldwert an ein Kombinationsfeld übergeben. mit Me.Caption übergibst du diesen Wert aber als "Titel" an die Form selber.
 
Ja, dann wird das sicherlich auch mein Fehler sein!
Mit welcher Eigenschaft oder Methode kann ich den Inhalt übergeben? Vielmehr wie kann ich überhaupt den Recordset auslesen?
 
Bei Access 2000 musst du diesen Wert der RowSource des Kombinationsfeldes übergeben.
Einzelne Werte sind hierbei durch das ";"voneinander getrennt.

Visual Basic:
Sub Button_Click
Kombinationsfeld2.RowSource = Kombinationsfeld2.RowSource & ";" & deine_variable
End Sub
 
Zurück