# Access/VBA -> SQL-Abfrage auswerten



## Slizzzer (4. Oktober 2004)

Hallo!

Hab gerade ein Brett vorm Kopf. Kann das mal einer abmachen?  

Folgendes Problem:
Ich habe ein Formular in dem ein Mitarbeiter, ein Monat und eine Jahreszahl jeweils aus Listenfeldern ausgewählt werden.
Nun will ich über die Aktion "Beim Klicken" oder "Nach Aktualisierung" eine SQL-Abfrage ausführen, die prüft, ob ein Datensatz in der Kombination wie ausgewählt schon existiert.

Mit den folgenden beiden Zeilen führt er zwar eine Abfrage durch, aber wie erhalte ich nun das Ergebnis (1 oder 0, Datensatz vorhanden oder eben nicht)?

SQL = "SELECT * FROM tabNachweise WHERE MAID='" & Me!lstMitarbeiter & "' AND Monat='" & Me!lstMonat & "' AND Jahr='" & lstJahr & "';"
DoCmd.RunSQL SQL

Unter PHP/MySQL gibt es ja mysql_affected_rows() z.B.

Wie stelle ich gleiches mit VBA an?

Gruß
Slizzzer


----------



## Alex F. (4. Oktober 2004)

Öffne ein Recordset dann hast du es über die Methode Recordcount


----------



## Slizzzer (5. Oktober 2004)

Danke für den Tipp!

Hab jetzt mal in der Onlinehilfe rumgefummelt. Ist das in VBA immer so aufwendig?
Was da so an Beispielen zu finden ist, hat ja mindestens 10-15 Zeilen Code?!

Gebacken gekriegt hab ich es auch noch nicht. 

Naja. mal gucken ob ich das noch hinbekomme. Sonst eben Fenster auf und raus damit.


----------



## Filone (5. Oktober 2004)

Der Code besteht aber auch aus Fehlerbehandlungsprozeduren, die m.E. auch wichtig sind.

Ich finde es nicht viel, vielleicht habe ich mich auch schon daran gewöhnt.


----------



## Slizzzer (6. Oktober 2004)

So, hab da mal was abgekupfert. Nur wenn ich die Aktion dann ausführe erhalte ich die Fehlermeldung "Fehler beim Kompilieren: Benutzerdefinierter Typ nicht definiert." und dann wird im Editor die Stelle "Dim db As Database" markiert.
Hatte mich schon gewundert, das der Eingabeassistent Database nicht zur Auswahl anbot.
Gemäß Onlinehilfe gibt es den Datentyp Database doch?!

Any ideas?

Gruß
Slizzzer

Private Sub lstMitarbeiter_Click()
    Dim sql As String
    Dim db As Database, Liste As Recordset

    sql = "SELECT * FROM tabNachweise WHERE MAID='" & Me!lstMitarbeiter & "' AND Monat='" & Me!lstMonat & "' AND Jahr='" & Me.lstJahr & "'"
    Set db = CurrentDb
    Set Liste = dbOpenRecordset(sql, dbOpenSnapshot)
    If Liste.RecordCount > 0 Then
        Me!cmdWeiter.Enabled = False
    Else
        Me!cmdWeiter.Enabled = True
    End If
End Sub


----------



## Filone (6. Oktober 2004)

//Edit : sorry, verlesen.


----------



## Slizzzer (6. Oktober 2004)

Huch? Watt nu?  

Das er Database nicht akzeptierte hab ich jetzt geklärt:
Die DAO Object Library war unter "Verweise" nicht aktiviert.
"Database" ist wohl ein Auslaufmodell.

Hat mich aber auch nicht weiter gebracht, denn jetzt pupt der Debugger bei dbOpenRecordset und folgenden Zeilen rum!

Egal, habe es erstmal über eine "Krücke" gelöst. Wie sach ich lieber nich  .
Hauptsache der Teil läuft. Später kann ich da immer noch rumbasteln.

Gruß
Slizzzer


----------

