Prüfschleife einbauen

Rico82

Grünschnabel
Danke schön.
dafür dass du schon lang raus bist, ist es aber sehr plausibel. vba mangelt eine nicht erzeugte und/oder gesetzte Variable an, nämlich die Variable
SQL$. Wie muss ich diese Dim und Set ´en? Das ist das was mir immer schwer fällt bei VB bzw. Allgemein :-(

Visual Basic:
Private Sub Monat_AfterUpdate()
    Dim db As Database
    Dim rs As Recordset
    
    Set db = OpenDatabase("d:\Documents and Settings\rschaedl\My Documents\Flopkunden Datenbank\Flopkunden V1.2.mdb")
    SQL$ = "SELECT Count(Monat) AS Anzahl From tblFlopkunden_2010_TDN WHERE Monat = 'April'"
    Set rs = db.OpenRecordset(SQL$)
    
    If rs.RecordCount > 20 Then
    MsgBox2000 "Das Monatskontingent April ist erreicht!", vbOKOnly + vbInformation, "Hinweis Dateneingabe"
    Me.Monat.SetFocus
    Else
    Me.GP_Nr_Kombinationsfeld.SetFocus
    End If
        
End Sub
 

tombe

Erfahrenes Mitglied
@yaslaw: Du hast natürlich mal wieder Recht. Vorhin habe ich selber noch gefragt wie der Wert zum Vergleich ermittelt wird und jetzt mache ich es selber falsch.

@Rico82: Am Anfang: Dim sql$ bzw. Dim sql As String sollte helfen. Und schau nach wie es yaslaw oben den Teile mit "rs!Anzahl" geschrieben hat. Sonst geht es wieder nicht.
 
Zuletzt bearbeitet:

Rico82

Grünschnabel
....es scheint zu funktionieren mit diesem Code:

Visual Basic:
Private Sub Monat_AfterUpdate()
    Dim db As Database
    Dim rs As Recordset
    Dim sql As String
    
    Set db = OpenDatabase("d:\Documents and Settings\rschaedl\My Documents\Flopkunden Datenbank\Flopkunden V1.2.mdb")
    sql = "SELECT Count(Monat) AS Anzahl From tblFlopkunden_2010_TDN WHERE Monat = 'April'"
    Set rs = db.OpenRecordset(sql)
    Call rs.MoveFirst
    
    If rs!Anzahl > 20 Then
    MsgBox2000 "Das Monatskontingent April ist erreicht!", vbOKOnly + vbInformation, "Hinweis Dateneingabe"
    Me.Monat.SetFocus
    Else
    Me.GP_Nr_Kombinationsfeld.SetFocus
    End If
        
End Sub

VB möchte nun aber auf die Datnebank zugreifen die ich mit einem Kennwort versehen habe, daher kommt auch der Laufzeitfehler. Gibt es die Möglichkeit die Abfrage ohne Kennwort auszuführen und ohne das Kennwort löschen zu müssen?
Nun wirds aber kompliziert.....

gruß und Danke
Rico
 

Yaslaw

alter Rempler
Moderator
Wenn du mit VBA in Access arbeitest, kannst du den DB-Zugriff sparen und das Recordset direkt aus currentDb öffnen ausser du graiffst auf eine andere DB zu als die in der du bist.

Visual Basic:
Dim rs as DAO.Recordset
DIM sql as String

sql = "SELECT ......"
Set rs = currentDb.OpenRecordset(sql)
 

tombe

Erfahrenes Mitglied
Versuch es mal so:

Visual Basic:
Set db = OpenDatabase OpenDatabase("d:\Documents and Settings\rschaedl\My Documents\Flopkunden Datenbank\Flopkunden V1.2.mdb" ;PWD=DEINPASSWORT")

Oder lies das hier mal: http://vb-tec.de/accpwd.htm
 

Neue Beiträge