Avatar billede maria.cand Nybegynder
30. marts 2004 - 15:55 Der 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;

Hvordan klarer jeg den??
Avatar billede jensen363 Forsker
30. marts 2004 - 16:02 #1
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 ???

Eller er jeg helt gal på den ?
Avatar billede jensen363 Forsker
30. marts 2004 - 16:08 #2
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
Avatar billede mugs Novice
30. marts 2004 - 16:10 #3
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.
Avatar billede mugs Novice
30. marts 2004 - 16:11 #4
Det var vist noget sludder jeg fik fyret af der. Maria - Se venligst bort fra mit svar.
Avatar billede hekla Nybegynder
30. marts 2004 - 16:14 #5
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
Avatar billede maria.cand Nybegynder
30. marts 2004 - 16:40 #6
feltet ubundet
Avatar billede maria.cand Nybegynder
30. marts 2004 - 16:46 #7
Problemet er at der er alt for mange brugernavne til min kombinationsboks fordi den er tilknyttet min medarbejder tabel!!
Avatar billede hekla Nybegynder
30. marts 2004 - 17:14 #8
Ja det er rigtigt. Feltet skal være ubundet.
Avatar billede maria.cand Nybegynder
30. marts 2004 - 20:19 #9
hmm HEKLA har lidt problemer med at den skriver at password og bruger navn ikke passer sammen
Avatar billede maria.cand Nybegynder
30. marts 2004 - 20:21 #10
Type mismach skriver den
Avatar billede hekla Nybegynder
30. marts 2004 - 23:52 #11
Den er beregnet på at både brugernavn og password er tekstfelter, og at formularens felter er formateret som tekst
Avatar billede maria.cand Nybegynder
30. marts 2004 - 23:58 #12
hmm det er fordi jeg allerede havde lavet en kode der hedder: Option Compare Database
Option Explicit

Public MedarbejderId As Long

Function CheckBruger(BrugerID As Long, 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]=" & BrugerID & " AND [Password]='" & Password & "'"
    If rs.NoMatch Then
        CheckBruger = False
    Else
        CheckBruger = True
        MedarbejderId = BrugerID
    End If

    rs.Close
    Set rs = Nothing
   
    Exit Function

CheckBruger_Error:
MsgBox Error$

End Function


Men den er beregnet på en kombinationsboks og på, at det er tal felter...
Avatar billede maria.cand Nybegynder
30. marts 2004 - 23:59 #13
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

Og disse VBa koder tilknyttet formularen
Avatar billede maria.cand Nybegynder
31. marts 2004 - 00:00 #14
Hmm jeg har lidt svært ved at overskue hvad jeg gør gald - istedet for medarbejder id skal de kun indtaste brugernavn og password -

Nu fungere den sådan at jeg kun kan taste medarbejderid og kode for at komme ind
Avatar billede hekla Nybegynder
31. marts 2004 - 00:21 #15
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

    rs.Close
    Set rs = Nothing
   
    Exit Function

CheckBruger_Error:
MsgBox Error$

End Function
Avatar billede maria.cand Nybegynder
31. marts 2004 - 00:33 #16
hekla skal denne ikke ændres rs.FindFirst "[MedarbejderID]= '" & BrugerNavn & "' AND [Password]='" & Password & "'"
Avatar billede hekla Nybegynder
31. marts 2004 - 01:40 #17
Jo det har du ret i:

rs.FindFirst "[Brugernavn]= '" & BrugerNavn & "' AND [Password]='" & Password & "'"

eller

rs.FindFirst "[Brugernavn]= '" & Me!BrugerNavn & "' AND [Password]='" & Me!Password & "'"

Jeg er ikke så god til det der med recordsets :o)
Avatar billede hekla Nybegynder
08. april 2004 - 10:47 #18
Fik du det til at virke?
Avatar billede maria.cand Nybegynder
08. april 2004 - 11:11 #19
nope det vil ikke helt - Det skulle gerne ligne den login funktion Thomas har lavet på Makeiteasy.dk
Avatar billede hekla Nybegynder
08. april 2004 - 11:31 #20
Hvor er du strandet?
Avatar billede maria.cand Nybegynder
13. april 2004 - 12:49 #21
ja hekla ikke ret mange steder den vil bare ikke!!
Avatar billede hekla Nybegynder
13. april 2004 - 16:33 #22
Hvilken fejlmeddelelse får du?
Avatar billede maria.cand Nybegynder
13. april 2004 - 16:57 #23
HEKLA det er løst med koden: Option Compare Database
Option Explicit

Public Username As String

Function CheckBruger(Login 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 "[Fornavn]='" & Login & "' AND [Password]='" & Password & "'"
    If rs.NoMatch Then
        CheckBruger = False
    Else
        CheckBruger = True
        Username = Login
    End If

    rs.Close
    Set rs = Nothing
   
    Exit Function

CheckBruger_Error:
MsgBox Err.Description

End Function



Public Function GetProgamname()
    GetProgamname = "TimeReg"
End Function
Avatar billede maria.cand Nybegynder
13. april 2004 - 16:58 #24
JEg takker for din indsats alligevel - du får hermed point
Avatar billede hekla Nybegynder
13. april 2004 - 18:06 #25
OK. Tak for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester