[VB] inlogscherm met database

Pagina: 1
Acties:
  • 251 views sinds 30-01-2008

  • Dirkse1984
  • Registratie: Februari 2004
  • Niet online
Heb het volgende probleem:

Zit een programmatje te programmeren met een inlog proces erbij.
Gebruikersnaam en Wachtwoord worden netjes uit een access database gehaald.
Maar heb in access nu 2 gebruikers aangemaakt, gebruiker 1 die in het eerste record staat in de tabel kan wel inloggen, maar gebruiker 2 niet.

Ik denk dat ik ergens iets moet programmeren, als wanneer hij ziet dat ik niet met gebruiker 1 inlog maar met gebruiker 2 inlog dat hij alle records inleest van mijn database.
Op dit moment leest hij alleen record 1 uit.
Waarschijnlijk is dit dus het probleem.

Maar wat is de oplossing hiervoor?
En als iemand weet hoe ik hierop moet zoeken wil ik dat ook graag weten, want met google kom ik er zelf nog niet uit.

Zou dus gewoon graag willen dat er meerdere gebruikers kunnen inloggen.
I.P.V 1 gebruiker.

Alvast bedankt voor de genomen moeite.

greetz

Verwijderd

Huh, je logt toch nooit met meerderen vanaf 1 app in?

Verwijderd

Je Query herschrijven?

Select User, password from tbl Where User=[user] And Password = [password]

bij geen resultaten inlogerror

wel resultaten : inloggen

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Hoe bepaal je of een gebruiker kan geauthenticeerd worden? Maw, hoe haal je de gebruiker op uit die Access DB?
Toch gewoon met een SQL query, waarmee je gaat controleren of er een record bestaat met username = x en wachtwoord = y ?

https://fgheysels.github.io/


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 22:51
Op z'n simpelst:
1. Haal wachtwoord op voor ingevoerde gebruikersnaam
2. Geen records? -> gebruikersnaam bestaat niet
3. Wel records? -> controleren of wachtwoorden overeenkomen.

Roomba E5 te koop


  • Dirkse1984
  • Registratie: Februari 2004
  • Niet online
Verwijderd schreef op 02 maart 2004 @ 15:21:
Je Query herschrijven?

Select User, password from tbl Where User=[user] And Password = [password]

bij geen resultaten inlogerror

wel resultaten : inloggen
---

zo heb ik het precies inderdaad.
Maar dan leest hij dus bij mij alleen het eerste record 1.
dat vindt ik zo raar.
Log ook niet met meerdere gebruikers in hoor.
1 gebruiker tegelijk.
Maar hij kan alleen de gebruiker inloggen, die in het eerste record staat van de acces tabel.
en in het tweede record niet.

Is me nog niet helemaal duidelijk wat voor een code ik dan daarvoor nodig heb.

Alvast bedankt voor de antwoorden

  • Dirkse1984
  • Registratie: Februari 2004
  • Niet online
whoami schreef op 02 maart 2004 @ 15:22:
Hoe bepaal je of een gebruiker kan geauthenticeerd worden? Maw, hoe haal je de gebruiker op uit die Access DB?
Toch gewoon met een SQL query, waarmee je gaat controleren of er een record bestaat met username = x en wachtwoord = y ?
ja zo doe ik het inderdaad, gewoon met een sql query

  • Dirkse1984
  • Registratie: Februari 2004
  • Niet online
iemand nog tips?

Want ik snap er niet zoveel meer van

  • mboy
  • Registratie: December 2001
  • Laatst online: 20-06-2024
Post eens wat relevante code. Dan kunnen we kijken wat er mis is.

  • Dirkse1984
  • Registratie: Februari 2004
  • Niet online
dit is de code wat ik allemaal in mijn inlogscherm heb staan:

Private Sub Form_Load()
Call OpenDataBase

cmdADO.ActiveConnection = cnnADO
cmdADO.CommandText = "SELECT [Gebruikersnaam],[Wachtwoord]from tblWerknemer"

OpenRecordSet
rsADO.Open cmdADO
End Sub
Private Sub cmdInput_Click(Index As Integer)
Select Case Index

Case 0 'Button inloggen
If txtNaam = rsADO.Fields("Gebruikersnaam") And txtWachtwoord = rsADO.Fields("Wachtwoord") Then
Unload Me
frmProgramma.Show
Else
If txtNaam <> rsADO.Fields("Gebruikersnaam") Or txtWachtwoord <> rsADO.Fields("Wachtwoord") Then
txtWachtwoord.Text = ""
MsgBox "U gebruikersnaam of wachtwoord is onbekend", vbOKOnly, "Er is een fout opgetreden"
Else
txtNaam.Text = "" And txtWachtwoord.Text = ""
MsgBox "Er is een onbekende fout opgetreden", vbCritical, "Onbekende fout"
End If

End If

Case 1 'Button annuleren
End
Case 2 'Button help voor inlogprocedure
frmInloghelp.Show vbModal
End Select
End Sub
Private Sub Form_Unload(Cancel As Integer)
cnnADO.Close
End Sub

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 22:51
Heb niet zoveel kaas van Acces code gegeten, maar moet je niet op de een of andere manier alle records doorlopen tijdens het controleren van je gebruikersnaam en wachtwoord? Anders doet hij waarschijnlijk alleen de eerste dus.

Roomba E5 te koop


  • Noork
  • Registratie: Juni 2001
  • Niet online
Je code slaat volgens mij nergens op. Of je zet alle gegevens in een resultset en je doorloopt de resultset na het indrukken van de button

Of je voert het select statement pas uit na het drukken op de knop. Zoiets als select * from USERS where USER='TEXT1'"
Bij geen resultaat unload.me
anders, inlog succesvol

  • Dirkse1984
  • Registratie: Februari 2004
  • Niet online
Welke SQL text moet ik dan aanpassen?
heb dit al wel veranderd:

Private Sub Form_Load()
Call OpenDataBase

cmdADO.ActiveConnection = cnnADO
cmdADO.CommandText = "SELECT * from tblWerknemer"

OpenRecordSet
rsADO.Open cmdADO
End Sub

Maar dat helpt nog niet.
En de rest aanpassen lukt me niet echt.
Want hoe moet mijn SQL dan precies worden?
Straks werkt het helemaal niet meer ben ik bang voor.
Weet iemand nog een oplossing voor mij?

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Op het moment heb je een recordset met daarin alle werknemers. Dit is een beetje bot, maar goed het kan wel.

Je kijkt met je huidige code (die je overigens tussen [code] tags moet plaatsen alleen naar het eerste record in je recordset.
Je zult dus het volgende moeten doen:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dim bFound As Boolean
Dim bLogged As Boolean

bFound = False
bLogged = False
rs.movefirst
do while not rs.eof and not bFound
   if rs["gebruiker"] = ingevoerdegebruiker then
      bFound = true 'dit zorgt ervoor dat je de loop niet te vaak doorloopt
     if rs["wachtwoord"] = "ingevoerdwachtwoord then
         'inloggen geslaagd
         bLogged = True
    end if
   end if
loop
if bLogged Then
   'plaats hier de code die moet worden uitgevoerd als inloggen is gelukt
else
   'plaats hier de code om de melding inloggen mislukt te geven
end if


Een nettere methode zou zijn dat je een query op de database doet met daarin de ingevoerde username en wachtwoord. Als dit geen resultaat teruggeeft, dan weet je dat het inloggen mislukt is.

Verwijderd

code:
1
2
3
4
5
6
7
rsADO.Filter = "Gebruikersnaam ='" & txtNaam & "'"

Case 0 'Button inloggen
   If txtNaam = rsADO.Fields("Gebruikersnaam") And txtWachtwoord =
      rsADO.Fields ("Wachtwoord") Then

... enz

  • Psychops
  • Registratie: Februari 2001
  • Laatst online: 27-05 10:48
Lijkt me op sowieso om veiligheids redenen niet handig om zo te doen. Je kan beter een query samenstellen met de ingevoerde gebruiker en gegeven wachtwoord

  • Dirkse1984
  • Registratie: Februari 2004
  • Niet online
zal jullie tips opvolgen

  • Dirkse1984
  • Registratie: Februari 2004
  • Niet online
Psychops schreef op 02 maart 2004 @ 19:13:
Lijkt me op sowieso om veiligheids redenen niet handig om zo te doen. Je kan beter een query samenstellen met de ingevoerde gebruiker en gegeven wachtwoord
En die query, wat wil je daar dan precies voor een code inhebben?

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Je hoeft niet steeds je topic te kicken hoor, we hebben hier ook een edit-knop.

Er is in dit topic al tig keren vermeld hoe je die query moet opmaken, zie:
[rml]whoami in "[ VB] inlogscherm met database"[/rml]
[rml]IkkeNietSnappe in "[ VB] inlogscherm met database"[/rml]
etc....

Daarnaast kan je misschien dit ook eens doornemen:
SQL Tutorial

In plaats van dus alle records op te halen, haal je enkel dat record op dat voldoet aan het ingegeven username en password.

Dit wordt echter een beetje heel basic; ik zou zeggen: verdiep je in de gegeven hints/tips en oplossingen en neem die SQL Tutorial eens door.

Succes.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.