[VB] ADO MQL Question

Pagina: 1
Acties:

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
Allo ik begin net met VB/Databases > SQL, en heb de volgende code gemaakt:

Option Explicit
Dim cnnADO As New ADODB.Connection
Dim cmdADO As New ADODB.Command
Dim rsADO As New ADODB.Recordset

Private Function GetValue(tabelveld As Field) As String
If IsNull(tabelveld) _
Then GetValue = "" _
Else GetValue = tabelveld
End Function

Private Sub Form_Load()
cnnADO.Provider = "Microsoft.Jet.OLEDB.3.51"
cnnADO.ConnectionString = "C:\Map\MijnDB.mdb"
cnnADO.Open
cmdADO.ActiveConnection = cnnADO
cmdADO.CommandText =
"SELECT [Username] FROM UP" ' UP betekent Username/Passwords (= TABEL)

rsADO.CursorLocation = adUseClient
rsADO.CursorType = adOpenDynamic
rsAdo.LockType = adLockPessimistic
rsADO.Open cmdADO
lstUsername.AddItem GetValue(rsADO!Username)
End Sub

Mijn bedoeling is om een loginscherm te maken waar ik de geldige loginnamen in een listbox zie (ik heb er 3) en dan als je op een listboxitem klikt (username) dat je dan de geldige password erbij moet invullen (ook stored in tabel UP (naast de username of course)).

Ik krijg het niet voor elkaar om alle 3 de usernames in de listbox te krijgen (enkel de eerste).

Hoe moet ik mijn code veranderen? Kan de code uberhaupt beter? Bedankt, 0px.

/edit : sorry topic moet ADO SQL Question zijn niet MQL...

Verwijderd

[mijn mening]Ik vind dit wel een zeer hoog RTFM-gehalte hebben...[/mijn mening]

Loopje icm MoveNext???

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
iedereen moet ergens beginnen.. jij bent toch ook ooit n00b geweest :) ben nog niet goed in VB ofzo anders zou ik dit hier niet vragen hehe t was al n gedoe om die 1e code te maken maar ok.. keb t wel opgezocht maar niet gevonden...iig bedankt voor je hulp... ;x

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
Ik had btw al een loopje proberen te maken icm met rsADO.MoveNext... maar m'n listbox bleef leeg..

Verwijderd

code:
1
2
3
4
5
6
7
8
do

   lstUsername.AddItem GetValue(rsADO!Username)

   rsADO.movenext


loop until rsADO.eof

kweenie ??? gokje ???

Verwijderd

code:
1
2
3
4
While Not rsADO.eof
   lstUsername.AddItem GetValue(rsADO!Username)
   rsADO.movenext
Wend


code:
1
2
3
4
Do
   lstUsername.AddItem GetValue(rsADO!Username)
   rsADO.movenext
Loop While Not rsADO.eof

Nog meer gokjes ;)

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
OK zal ze proberen.. sorry dat ik noob ben, had eerst zelf wel opgezocht en geprobeerd hoor, maar t lukte gewoon niet en daarom hier gepost. Alsnog bedankt.

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
Ok. Het werkt, echt bedankt.
Maar hoe zorg ik ervoor dat als ik een van die 2 items in m'n listbox aanklik, en dan het wachtwoord er bij invul, dat t programma dan de geselecteerde user en wachtwoord gaat vergelijken met de waarden in de DB?
Ik snap niet goed hoe het werkt met lisbox selections :'(..
Ik kan het niet vinden in m'n boek en op google vind ik ook nix, dus sorry als ik weer irri overkom |:(

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
ik denk dat ik al een weggetje heb gevonden, kga er ff mee kloten. als je nog wil antwoorden bedankt. als dit je irriteert reageer dan gewoon niet ok.

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 05-09 14:13
Lukt nog niet echt OK.. wat kan ik t beste doen bij lstUsername_Click() .. :?

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Wat dacht je hiervan:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Private Conn As Connection
Private Const ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=C:\Map\MijnDB.mdb;Persist Security Info=False"

Private Sub cmdLogin_Click()
Dim strSQL As String
Dim RS As Recordset

strSQL = "SELECT [UserName], [Password] " _
     & "FROM UP " _
     & "WHERE [UserName] = " + NoQuote(lstUsername.Text) + " " _
     & "AND [Password] = " + NoQuote(txtPassword.Text)
Set RS = Conn.Execute(strSQL)
  
If RS.RecordCount > 0 Then
  Call MsgBox("Password correct")
Else
  Call MsgBox("Password not correct")
End If

Set RS = Nothing

End Sub

Private Sub Form_Load()
Dim strSQL As String
Dim RS As Recordset

Set Conn = New Connection
Conn.Open ConnectionString

strSQL = "SELECT [UserName] " _
     & "FROM UP"
Set RS = Conn.Execute(strSQL)

For i = 0 To RS.RecordCount - 1
  lstUsername.AddItem CStr(RS!UserName)

  RS.MoveNext
Next i

Set RS = Nothing

End Sub

Private Function NoQuote(str As String) As String

NoQuote = Replace(str, "'", "''")

End Function

  • whoami
  • Registratie: December 2000
  • Laatst online: 07-09 19:30
Dit heeft niets met n00b in VB te maken. Het is gewoon programmeertechnisch.

Je ziet toch ook wel dat je in uw code maar 1 record aan die listbox toevoegd, en dat je dus een loop nodig hebt.

Had je een beetje gezocht en logisch nagedacht, dan had je er waarschijnlijk veel sneller op gekomen ipv hier een topic over te openen.

https://fgheysels.github.io/

Pagina: 1