Hallo zusammen,
ich möchte ein Formular öffnen, bei dem nur der Formularkopf mit einem Titel und einem Kombinationsfeld namens "cmbProjektname" angezeigt werden. Das Kombifeld hat als Datensatzherkunft eine Abfrage, die lediglich die Primärschlüsselspalte der Tabelle "Projektkalkulation" anzeigt. -> funktioniert soweit
Wenn ich jetzt einen Projektnamen in dem Kombifeld auswähle, so erscheint eine Fehlermeldung (3070), dass die folgendes sagt:
Das Access Datenbankmodul erkennt 'blablabla' (hier: irgend einen Projektnamen aus der Tabelle) nicht als gültigen Feldnamen oder Ausdruck.
Mein Code
Private Sub cmbProjektname_AfterUpdate()
On Error GoTo fehlerbehandlung
Dim rs As Recordset
Set rs = Me.Recordset.Clone
rs.FindFirst "Projektname = " & Me.cmbProjektname
Me.Detailbereich.Visible = True
Me.cmbProjektname.Requery
If rs.NoMatch Then
If MsgBox("Der Datensatz existiert nicht. Soll er neu angelegt " & _
"werden?", vbYesNo, "Neuer Datensatz?") = vbYes Then
DoCmd.OpenForm "Richtpreiskalkulation_Erstellen", , , , acFormAdd
Else
Me!cmbProjektname = Default
End If
Else
Me.Bookmark = rs.Bookmark
End If
Set rs = Nothing
' Vorheriger Versuch, aber auch ohne Erfolg:-/
'If Not IsNull(Me.cmbProjektname) Then
' Me.Filter = "[Projektname] = " & Me.cmbProjektname
' Me.FilterOn = True
' Me.Detailbereich.Visible = True
'Else:
' MsgBox "Bitte wählen Sie einen Projektnamen aus."
'End If
Exit Sub
fehlerbehandlung:
MsgBox "Fehlernummer: " & Err.Number & Chr(13) & "Fehlerbeschreibung: " & Err.Description & Chr(13) & "Prozedurname: cmbProjektname_AfterUpdate", vbCritical, "Es ist ein Fehler aufgetreten"
End Sub
Hallo,
naja, wenn das Form keinen Datensatz anzeigt (keine, auch keine leeren Datensätze in der Datenherkunft hat) , dürfte es auch keinen "RecordsetClone" und ein darin enthaltenenes Feld "Projektname" geben, wodurch die Findfirst-Methode in die Luft schiesst.
Der ganze Ansatz kommt mir aber etwas fehlkonstruiert vor.
Um festzustellen, ob es einen DS (in einer Tabelle) mit dem ausgewählten Projektnamen schon gibt, sollte die Dcount-Funktion (oder Ähnliches) zum Einsatz kommen.
Zudem ist der Bedingungsparameter bei Findfirst nicht korrekt, bzw. nachzufragen:
Welchen Datentyp hat "Projektname" in der entspr. Tabelle? Falls der nicht vom Datentyp "Zahl" ist, sondern "Text", dann muss die Bedingung so lauten:
rs.FindFirst "Projektname ='" & Me!cmbProjektname & "'"
Hallo DF6GL,
was das "fehlkonstruiert" angeht, so kann das durchaus sein. Ich bin echt ein schrecklicher Access-Anfänger! :'(
Dennoch hat Dein Tipp mit dem Code schon ausgereicht, um mein Problem zu lösen!! ;D
Ich habe nämlich tatsächlich den Projektname als Text definiert! ;)
Also vielen Dank für die schnelle Rettung!