30. marts 2004 - 15:55Der er
24 kommentarer og 1 løsning
Komninationsboks til tekst feltr med indtastning
JEg har en login funktion hvor man fra en kombinationsbokse vælger bruger navn og herfeter indtaster password! Nu vil jeg gerne have det ændret således man ikke vælger brugernavner fra en kombinationsbokse men selv indtaster. Kombinationsboksen er baseret på følgende SQL:
SELECT Medarbejder.MedarbejderId, [Fornavn] & " " & [Efternavn] AS Navn FROM Medarbejder;
Jeg går ud fra, at din kombinationsboks er bundet til et felt, og det er dette felt du gerne vil have muligheden for også at indtaste et valgfrit navn ???
I egenskaber til kombinationsboksen markerer du BegrænsTilListe = Nej. Herefter har du både mulighed for at vælge blandt dem som allerede er i listen, eller selv indtaste et nyt navn.
Hvis du tillige vil have tilføjet det nye navn i din medarbejderliste, skal du have en opdateringsforespørgsel tilknyttet hændelsesproceduren AfterUpdate
Hvis din combo er bundet "tilbage i db" til er felt i tabellen, skal du slette opslaget og lave combo til en tekstboks. Du skal så trække det ind i formularen igen.
Hvis det ikke er er en combo i tabellen, kan du blot trække felterne fornavn og efter navn ind i forespørgslen / formularen. Slet herefter combo.
Op ret et felt i tabellen med brugernavn og brug dette felt som kontrolelementkilde til dit felt på formularen. Jeg har kaldt Felterne på formularen brugernavn og password og felterne i tabellen t_user for username og password
På din OK-knaps VedKlik hændelse skriver du:
Dim stDocName As String Dim stLinkCriteria As String
'Test if the field "Brugernavn" is empty If IsNull(Me!Brugernavn) Or Me!Brugernavn = "" Then MsgBox "Du skal skrive et brugernavn", vbCritical, "Skriv et brugernavn" Me!password = "" DoCmd.GoToControl "brugernavn" Exit Sub End If
'Test if the user exists If DCount("*", "t_user", "username = '" & Me!Brugernavn & "'") = 0 Then MsgBox "Brugernavnet findes ikke", vbCritical, "Brugeren findes ikke" Me!brugernavn = "" DoCmd.GoToControl "Brugernavn"
Exit Sub
'Test if the password is correct ElseIf DCount("*", "t_user", "password = '" & Me!password & "' And username = '" & Me!Brugernavn & "'") = 0 Then MsgBox "Forkert adgangskode", vbCritical, "Adgangskoden er forkert" DoCmd.GoToControl "Brugernavn" Exit Sub
Else stDocName = "MinNæsteFormular" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit Sub End If
Option Compare Database 'Anvend databasens rækkefølge til strengsammenligninger. Option Explicit
Private Sub Cancel_Click()
Dim svar As Integer
svar = MsgBox("Vil du lukke hele systemet!" & vbNewLine & vbNewLine & "Er du sikker?", vbQuestion + vbYesNo, "Afslut?") If svar = vbYes Then DoCmd.Quit Else Me.initialer.SetFocus End If
End Sub
Private Sub Form_Load() On Error Resume Next Me!Programname = GetProgamname End Sub
Private Sub OK_Click()
Static Tries As Integer On Error GoTo ok_click_fejl
If Not IsNull(Me!Password) And Not IsNull(Me!initialer) Then If CheckBruger(Me!initialer, Me!Password) Then DoCmd.Close acForm, Me.Name DoCmd.OpenForm "Hovedmenu" Else MsgBox "Der er indtastet forkert password!", vbCritical, "Fejl!" Me!Password = "" Me!Password.SetFocus Tries = Tries + 1 Exit Sub End If Else If IsNull(Me!initialer) Then MsgBox "Brugernavn mangler!", vbCritical, "Fejl!" Me!initialer.SetFocus End If End If Exit Sub ok_click_fejl: If Err <> 94 Then MsgBox Error$ & Chr(10) & Str(Err) End If Resume Next End Sub
Private Sub password_Change() Me!OK.Enabled = True Me!OK.Default = True End Sub
Ja den er noget mere elegang end min. Hvis du vil bruge brugernavn i stedet for brugerID, skal du ændre lidt på tegnsætningen. '" & BrugerNavn & "' i stedet for " & BrugerID & "
Function CheckBruger(BrugerNavn As String, Password As String) As Boolean
Dim db As Database, rs As DAO.Recordset
On Error GoTo CheckBruger_Error Set db = CurrentDb Set rs = db.OpenRecordset("Medarbejder", dbOpenSnapshot)
rs.FindFirst "[MedarbejderID]= '" & BrugerNavn & "' AND [Password]='" & Password & "'" If rs.NoMatch Then CheckBruger = False Else CheckBruger = True MedarbejderId = BrugerID End If
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.