Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Nach Auswahl in Kombifeld Datensatz anzeigen

Begonnen von YvS, Oktober 01, 2014, 15:32:56

⏪ vorheriges - nächstes ⏩

YvS

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
Code (vbnet) [Auswählen]
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

DF6GL

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 & "'"

YvS

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!