Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

VBA Problem

Begonnen von Rol, Januar 02, 2015, 23:40:58

⏪ vorheriges - nächstes ⏩

Rol

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

DF6GL

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.
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

database

#2
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

MzKlMu

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.
Gruß Klaus

database

#4
Stimmt natürlich, hab's oben berichtigt