Neuigkeiten:

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

Mobiles Hauptmenü

2 Kombifelder verknüpfen

Begonnen von mustermann, August 30, 2016, 10:45:17

⏪ vorheriges - nächstes ⏩

mustermann

Noch ein anderes Anliegen

Ich habe einen Suchbutton mit diesem Code belegt:
Private Sub cmdSuche_Click()
    If Len(Me!txtSuche) > 0 Then
         strFilter = "Nachname LIKE '" & Me!txtSuche & "'"
         Me!frmMitarbeiterUfoGeraeteNeu.Form.Filter = strFilter
         Me!frmMitarbeiterUfoGeraeteNeu.Form.FilterOn = True
     Else
     Me!frmMitarbeiterUfoGeraeteNeu.Form.Filter = ""
End Sub


Ich möchte gerne den Code so erweitern, dass wenn der Nachname nicht existiert eine Msgbox ("Möchten Sie ein neues Mitarbeiterprofil anlegen?") mit JA/Nein Schaltfläche erscheint. Bei 'Ja'-Betätigung führt dies zum Schließen den aktuellen Formular und zum Öffneneines anderen Formulars 'XY' und bei 'Nein' sich die Msgbox einfach wieder schließt.

Kann mir dabei Jemand helfen?

Gruß

Danke

Joe0301

Hallo,

If IsNull(DLookup("FeldNachname", "DeineTabelle", "FeldNachname = " & Str(Me!txtsuche))) Then

Dim Messageboxwert As Byte

Messageboxwert = MsgBox("DeinFehlertext", vbYesNo, "Wie soll die Messagebox heißen")

If Messageboxwert = vbYes Then
'Und hier dann den Code Für formularöffnen und schließen



Bin zwar kein Profi aber bei mir Funktioniert es so in ähnlicher Form
Hoffe ich konnte helfen.

MfG
Joe0301

mustermann


mustermann

Kann nicht sagen ob der Code funktioniert, bekomme eine Fehlermeldung:

"If-Block ohne End If" bei diesem Code:

Private Sub Kombinationsfeld88_AfterUpdate()
If IsNull(DLookup("Nachname", "tbl_Mitarbeiter", "Nachname = " & Str(Me!Kombinationsfeld88))) Then
Dim Messageboxwert As Byte
Messageboxwert = MsgBox("Mitarbeiter existiert nicht! Soll ein Profil angelegt werden?", vbYesNo, "Info")
If Messageboxwert = vbYes Then
DoCmd.OpenForm "frm_MitarbeiterNeu"
End If
End Sub


Kann mir Jemand bitte sagen was hier fehlt?

Gruß

mustermann

Sorry habe falschen Code gepostet...
Es geht um diesen Code (genauer gesagt um Teil 2 - der nicht den gewünschten Prozess einleitet):
Private Sub Kombinationsfeld88_AfterUpdate()
Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[MitarbeiterID] = " & Str(Nz(Me![Kombinationsfeld88], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
   
'Teil 2
If IsNull(DLookup("MitarbeiterID", "tbl_Mitarbeiter", "MitarbeiterID = " & Str(Me!Kombinationsfeld88))) Then
Dim Messageboxwert As Byte
Messageboxwert = MsgBox("Mitarbeiter existiert nicht! Soll ein Profil angelegt werden?", vbYesNo, "Info")

If Messageboxwert = vbYes Then DoCmd.OpenForm "frm_MitarbeiterNeu"
End If


End Sub

DF6GL

#125
Hallo,

es sollte auch einfacher gehen:

Private Sub Kombinationsfeld88_AfterUpdate()
Dim rs As Dao.Recordset
    Set rs = Me.RecordsetClone
    rs.FindFirst "[MitarbeiterID] = " & Nz(Me![Kombinationsfeld88], 0)
    If Not rs.Nomatch Then
       Me.Bookmark = rs.Bookmark
    Else
        If MsgBox("Mitarbeiter existiert nicht! Soll ein Profil angelegt werden?", vbYesNo, "Info") = vbYes Then
           DoCmd.OpenForm "frm_MitarbeiterNeu"
        End If

    End If
rs.Close
Set rs=Nothing
End Sub


Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

mustermann

Hallo Franz,

ich bekomme leider diese Fehlermeldung:

Fehler beim Kompilieren: Benutzerdefinierter Typ nicht defieniert.  "Wobei Dim rs As DAO.Recordset" markiert wird...

Joe0301

Beim ersten Code fehlt lediglich ein
zweites End if

mustermann

Hallo Joe0301,

die Fehlermeldung (Benutzerdefienierter Typ nicht defieniert) bleibt auch mit dem zweiten End If bestehen...

mustermann

Ich meinte natürlich die Fehlermeldung: End If ohne If-Block bleibt bestehen....

DF6GL

Hallo,

welchen Code verwendest Du nun?

Poste den mal mit Copy&Paste
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Joe0301

Messageboxwert = MsgBox("Mitarbeiter existiert nicht! Soll ein Profil angelegt werden?", vbYesNo, "Info")

If Messageboxwert = vbYes Then
DoCmd.OpenForm "frm_MitarbeiterNeu"    'Neue Zeile beginnen
End If
End if       'das zweite End if muss trotzdem dabei sein

End Sub

DF6GL

 ::) ::)

die GANZE Prozedur bitte....

Hast Du mal meinen Vorschlag getestet. Den hab ich ja nicht umsonst gepostet.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

mustermann

Hallo Franz,

ich habe beide Codes ausprobiert!

Bei dem, denn Du gepostet hast, kommt folgende Fehlermeldung: Benutzerdefinierter Typ nicht definiert.

Weil bei mir wahrscheinlich die Microsoft DAO 2.1 Object Library eingestellt ist. ich weiß aber nicht wie ich auf 3.6 umstellen - habs noch nicht gefunden..

Der Code :
Private Sub Kombinationsfeld88_AfterUpdate()
Dim db As Dao.Database
Dim rs As Dao.Recordset
    Set rs = Me.Recordset.Clone
    rs.Findfirst "[MitarbeiterID] = " & Nz(Me![Kombinationsfeld88], 0)
    If Not rs.Nomatch Then
       Me.Bookmark = rs.Bookmark
    Else
        If MsgBox("Mitarbeiter existiert nicht! Soll ein Profil angelegt werden?", vbYesNo, "Info") = vbYes Then
           DoCmd.OpenForm "frm_MitarbeiterNeu"
        End If
    End If
rs.Close
Set rs = Nothing
End Sub

Gruß

DF6GL

Hallo,

Benutzerdefinierter Typ nicht definiert.


Öffne den VBA-Editor, dann setze einen Haken unter Extras/Verweise bei der Microsoft DAO3.6 Library oder dem Nachfolger "Microsoft  Office  XX  Access Database Engine" bei höheren Access-Versionen.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access