Hallo
ich habe folgendes problem,
ich habe eine Zeiterfassungsdatenbank erstellt in der ich ein Hauptformular (Anmeldeformular Benutzer, Passwort) der nach dem Login in ein anderes Formular soll. Das funktioniert auch soweit, nur habe ich in dem Formular noch eine Abfrage in denen verschiedene Spalten sind unter anderem die Spalte Benutzer (Customer).
ich habe versucht über mein Bestehenden VBA code noch die funktion einzubinden in dem es mir erlaubt nach dem Login auf einen der Spalte "Benutzer" nach einen Namen zu Filtern.
If Username = "***" And Password = "***" Then
DoCmd.Close acForm, "Login Form", acSaveNo
DoCmd.OpenForm "frmClockIn", acNormal, "", ""
DoCmd.OpenForm "frmClockIn", , , "Customer = '***'"
Else
irgendwie geht das aber leider nicht wie erhofft.
ich hoffe ihr könnt mir weiter helfen.
Guten morgen!
Hier zwei Alternativen:
1. Filter direkt im Formular, beim Einloggen:
DoCmd.OpenForm "FormularName"
With FormularName.Recordset
.FindFirst "[Customer] = " & 'Kriterium'
End With
2. Oder du setzt den Filter beim Laden des darauffolgenden Formulars
Sprich:
Das Formular öffnet sich, dann ladet er den Filter:
'Öffnen des Formulars
Dim strfilter As String
strfilter = "Customer ='" & Kriterium & "'
With FormularName.Form
.Filter = strfilter
.FilterOn = True
End With
PS: Je nachdem ob du einen Wert zurückgegeben haben willst (1ste Alternative) oder mehrere (2te Alternative)
Hallo,
ich wollte das er mir nicht einen Bestimmten Filter setzt sondern Benutzerspezifisch heist, wenn beispielsweise Thomas Müller sich im Anmeldeformular einloggt das dann auch nach dem Namen gefiltert wird.
Da es aber mehrere Benutzer gibt würde das aber leider nicht funktionieren
If Username = "Thomas Müller" And Password = "123" Then
DoCmd.Close acForm, "Login Form", acSaveNo
DoCmd.OpenForm "frmClockIn", acNormal, "", ""
DoCmd.OpenForm "frmClockIn", , , "Customer = 'Thomas Müller'"Else
vielleicht liegt es daran dass ich eine Abfrage als Unterformular habe?
Hallo,
die ganze Vorgehensweise ist nicht zielführend..
Im Login-Form:
Sub btnLogin_Click()
' Hier Code zur Verifikation der Anwendernamens und des Passwortes und holen der UserID aus der User-Tabelle
Select Case UserID
Case 1
DoCmd.OpenForm "frmClockIn" ' 1 ist z. B. der Admin
Case 2
' Tu was, wenn UserID = 2 ist
Case Else
DoCmd.OpenForm "frmClockIn", , , "Customer = '" & Me!Username & "'" 'falls das Form das Feld "Customer" in seiner Datenherkunft enthält.
End Select
End Sub
Hallo
If Username = "Thomas Müller" And Password = "123" Then
DoCmd.Close acForm, "Login Form", acSaveNo
DoCmd.OpenForm "frmClockIn", acNormal, "", ""
dieser Code funktioniert einwandfrei
das Feld Customer ist aus einer Abfrage als Unterformular drin
das Unterformular heist: frmClockIn_SUB
und die Abfrage qry_ReviewTime
ich wollte den Code erweitern in dem Er mir für einen bestimmten User auch einen bestimmten Filter setzt
der Ganze lautet so:
Private Sub Befehl4_Click()
If attempts >= 3 Then
MsgBox "Sie haben keine Rechte, die Datenbank zu öffnen. Bitte kontaktieren Sie den Administrator", vbCritical, "Access Denied"
Application.Quit
End If
If Username = "Thomas" And Password = "123" Then
DoCmd.Close acForm, "Login Form", acSaveNo
DoCmd.OpenForm "frmClockIn", acNormal, "", ""
DoCmd.OpenForm "frmClockIn", , , "Customer = 'Thomas'"
Else
If Username = "Maximilian" And Password = "456" Then
DoCmd.Close acForm, "Login Form", acSaveNo
DoCmd.OpenForm "frmClockIn", acNormal, "", ""
DoCmd.OpenForm "frmClockIn", , , "Customer = 'Maximilian'"
Else
If Username = "" And Password = "" Then
MsgBox "Sie müssen einen Benutzer und ein korrektes Passwort eingeben"
attempts = attempts + 1
Else
MsgBox "Falscher Benutzer oder falsches Passwort", vbOKOnly, "Invalid Data"
Username = ""
Password = ""
Username.SetFocus
attempts = attempts + 1
End If
End If
End If
End Sub
Hallo,
bin mir aber trotzdem nicht sicher warum du zwei mal das gleiche Formular ins Fokus bringst :)
DoCmd.OpenForm "frmClockIn", acNormal, "", ""
DoCmd.OpenForm "frmClockIn", , , "Customer = 'Thomas'"
Du öffnest quasi das Formular frmClockIn und dann nochmals, aber mit Kriterium. Wenn das einmal schon geöffnet ist, weiß ich nicht, ob er bei der zweiten Zeile nun das Kriterium übernimmt (weil das Formular ja schon offen ist). Habs aber noch nicht ausprobiert.
Eigentlich sollte das vollkommen ausreichen:
DoCmd.OpenForm "frmClockIn", , , "Customer = 'Thomas'"
Jetzt habe ich es selbst noch nie probiert, aber wenn es immer noch nicht klappt und es an der Abfrage liegt, musst du wohl auf SQL umsteigen. Kopier einfach den SQL Text aus der Abfrage und benutz diese per VBA mit der Übergabe des WHERE-Kriteriums
stimmt
hab es abgeändert
If Username = "Thomas" And Password = "123" Then
DoCmd.Close acForm, "Login Form", acSaveNo
DoCmd.OpenForm "frmClockIn_SUB", , , "Customer = 'Thomas'"
Else
das problem jetzt aber ist das nach dem Login nur das unterformular geöffnet wird ohne das eigentliche formular selber
filter hätte auch funktioniert
so langsam komme ich der Sache näher aber Accsess sagt mir das das Ausgesprochene Feld Thomas nicht gefunden werden kann
If Username = "Thomas" And Password = "123" Then
DoCmd.Close acForm, "Login Form", acSaveNo
DoCmd.OpenForm "frmClockIn", , stLinkCriteria
Forms(frmClockIn)![frmClockIn_SUB].Form.Filter = "[Customer]= " & Me![Thomas]
Forms(frmClockIn)![frmClockIn_SUB].Form.FilterOn = True
Else
was ist hier falsch
Hallo,
wenn Du ein (Haupt)-Form öffnest mit Where-Condition-Parameter-Angabe, dann wird doch nicht das Unter-Formular gefiltert....
Wie ist denn überhaupt der Zusammenhang zwischen Haupt- und Unterform ? Gibt es da Verknüpfungseinstellungen?
Probier mal folgendes:
If Username = "Thomas" And Password = "123" Then
DoCmd.Close acForm, "Login Form"[u], acSaveNo[/u]
DoCmd.OpenForm "frmClockIn"
Forms!frmClockIn!frmClockIn_Sub.Form.Filter = "Customer = 'Thomas'"
Forms!frmClockIn!frmClockIn_Sub.Form.FilterOn =True
Else
Und nochmal: Das Ganze ist nicht zielführend... ::)
Unglaublich das ist genau das was ich gesucht habe
vielen Dank ;D