Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Rol am Januar 02, 2015, 23:40:58

Titel: VBA Problem
Beitrag von: Rol am Januar 02, 2015, 23:40:58
Hallo Alle Zusammen,
Habe folgendes Problem mit diesem Code:

Private Sub edtEinloggen_Click()
Dim rcstblUser As Recordset

If Len(Me.edtNachname.Value) = 0 Then
   Me.edtNachname.SetFocus
   Beep
   Me.lblAnmeldeErgebnis.Caption = "Bitte geben Sie einen Namen ein!"
Else
Set rcstblUser = CurrentDb.OpenRecordset("tblUser", dbOpenDynaset)
rcstblUser.FindFirst "[USER NACHNAME]= '" & Me.edtNachname & "'"

If rcstblUser.NoMatch Then
   Me.edtNachname.SetFocus
   Beep
   Me.lblAnmeldeErgebnis.Caption = "Das ist kein gültiger Name!"
Else
If rcstblUser.Fields("User Passwort").Value = Me.edtPasswort.Value Then
   p_IngUSERID = rcstblUser.Fields("USER ID").Value
   p_strUSERNACHNAME = rcstblUser.Fields("USER VORNAME").Value & _
   " " & rcstblUser.Fields("USER NACHNAME").Value
   Me.lblAnmeldeErgebnis.Caption = "Anmeldung erfolgreich."
   LoginName = Me.edtNachname.Value
      DoCmd.Close acForm, "editUser", acSaveNo
      DoCmd.OpenForm " Basis "
   
Else
   Me.edtPasswort.SetFocus
   Beep
   Me.lblAnmeldeErgebnis.Caption = "Das ist kein gültiges Passwort"
   End If
End If
End If

End Sub
     
Dieser funktionniert - nur er bereitet mir folgende Probleme :

1) schliesst er nicht das Formular "editUser"

2) möchte ich gerne, dass wenn die Sachbearbeiter mit Namen Anton und Otto sich anmelden, hier das Formular Basic "Verkauf" sich öffnet und bei Namen Schmit zb das Formular Basic Kontrolle sich öffnet

Wie kann ich den Code umändern ?? ::)

Vielen Dank im Voraus und schöne Grüsse
Rol
Titel: Re: VBA Problem
Beitrag von: DF6GL am Januar 03, 2015, 08:14:26
Hallo,



wird das Form "editUser" (heißt das auch so?) nicht geschlossen oder das Form "Basis" nicht geöffnet?

Ist "Anton" oder "Otto" der Vorname oder Nachname?




Dim LoginName  as String
.
.
.
DoCmd.Close acForm, Me.Name   'falls das Form geschlossen werden soll, in dem dieser Code abläuft.

LoginName = Me!edtNachname

Select Case  LoginName
  Case "Anton", "Otto"
    DoCmd.OpenForm "Basis"

  Case "Schmit"
     Docmd.Openform "Kontrolle"

  Case Else
    'Docmd.Openform "xyz"
End Select
.
.
.



Mindestens diese "starre" Abhängigkeit von bestimmten Namen sollte nochmal überdacht werden.
Titel: Re: VBA Problem
Beitrag von: database am Januar 03, 2015, 10:37:48
Hallo,

und dann wäre da noch zu erwähnen ...

Wo hast du die Variablen 'p_IngUSERID ', 'p_strUSERNACHNAME' und 'LoginName' deklariert?
Wenn das keine Globalen Variablen sind sollten sie in der Prozedur deklariert werden, in der sie verwendet werden!
Stelle sicher, dass 'Option Explicit' in deinen Prozeduren erscheint - VBE --- Extras --- Optionen --- Reg.Karte Editor --- Variablendeklaration erforderlich --- Haken setzen!

DoCmd.Close acForm, "editUser" , acSaveNo
Wenn ich annehme dass auf dem Login-Formular nur ungebundene Felder verwendet werden,  werden eingegebene Daten in diesen Feldern automatisch verschwinden wenn das Formular geschlossen wird.
acSaveNo bezieht sich ausschließlich auf die Speicherung eines eventuell geänderten Formularentwurfs.

DoCmd.OpenForm " Basis "
Die beiden Leerzeichen - vor und nach dem Formularnamen - sind (wahrscheinlich) nicht Bestandteil des Formularnamens.

Und es fehlt am Ende der Prozedur

rcstblUser.Close
Set rcstblUser = Nothing
Titel: Re: VBA Problem
Beitrag von: MzKlMu am Januar 03, 2015, 11:26:20
Hallo,
nur zur Ergänzung:
acSaveNo bzw. acSaveYes hat mit Datenspeicherung nichts zu tun. Das bezieht sich ausschließlich auf die Speicherung eines eventuell geänderten Formularentwurfs.
Titel: Re: VBA Problem
Beitrag von: database am Januar 03, 2015, 11:38:16
Stimmt natürlich, hab's oben berichtigt