17. februar 2003 - 17:32Der er
10 kommentarer og 2 løsninger
Database-login
Hej. Jeg vil gerne lave en loginform i mit program, hvor den går ind og chekker om det er et eksisterende username og password i databasen. Man skal også kunne oprette sig og have "rang" 1 og 2 (1 = alm. bruger, 2 = adminstrator). Så: 1) Hvordan opretter man en 'post' i en database? 2) Hvordan læser man fra en database? 3) Hvordan sletter man poster fra en database?
'------------- Database.mdb ------------- 'Tabel1 = { ' 'ID = (Autonummerering) 'Felt1 = Text 'Felt2 = Text 'Felt3 = Text ' '} '------------- Database.mdb -------------
Option Explicit
Private m_Conn As Object 'Connection object Private m_Rs As Object 'RecordSet object
Private DataPath As String 'Stig til databasen Private DataPass As String 'Password til databasen
Private Sub Command1_Click() Dim lngID As Long lngID = DB_AddNew("Tabel1") 'Tilføje
Call DB_Edit(lngID, "Tabel1") 'Rediger
Call DB_View(lngID, "Tabel1") 'Vis ID
Call DB_Loop("Tabel1") 'Vis en liste
Call DB_Delete(lngID, "Tabel1") 'Slet ID End Sub
Private Sub Form_Load() Set m_Conn = CreateObject("ADODB.Connection") Set m_Rs = CreateObject("ADODB.RecordSet")
DataPass = "Password" DataPath = App.Path & "\Database.mdb" End Sub
Private Sub Form_Unload(Cancel As Integer) Set m_Rs = Nothing Set m_Conn = Nothing End Sub
Public Function DB_AddNew(ByVal strTabel As String) As Long Dim strSQL As String m_Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & DataPath & ";PWD=" & DataPass & ";"
Public Function DB_Edit(ByVal intID As Long, ByVal strTabel As String) Dim strSQL As String m_Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & DataPath & ";PWD=" & DataPass & ";"
strSQL = "SELECT * FROM " & strTabel & " WHERE ID = " & CLng(intID)
With m_Rs .Open strSQL, m_Conn, 1, 3
If Not .EOF Then
m_Rs("Felt1") = "Felt1" 'Rediger m_Rs("Felt2") = "Felt2" 'Rediger m_Rs("Felt3") = Empty 'Brug Empty hvis den skal være tom.
.Update End If
.Close End With m_Conn.Close End Function
Public Function DB_View(ByVal intID As Long, ByVal strTabel As String) Dim strDSN As String Dim strSQL As String
Dim strFelt1, strFelt2, strFelt3
strSQL = "SELECT * FROM " & strTabel & " WHERE ID = " & CLng(intID) strDSN = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & DataPath & ";PWD=" & DataPass & ";"
With m_Rs .Open strSQL, strDSN, 3
If Not (.BOF Or .EOF) Then
strFelt1 = m_Rs("Felt1") 'Vis ID strFelt2 = m_Rs("Felt2") 'Vis ID strFelt3 = m_Rs("Felt3") 'Vis ID
End If
.Close End With End Function
Public Function DB_Loop(ByVal strTabel As String) Dim strDSN As String Dim strSQL As String
Sjh << Det ser ud til at det var noget jeg kunne bruge :) Men jeg vil lige uddybe det jeg vil lidt mere:
Når man starter programmet ser man login-formen. Man skriver sit brugernavn og password, programmet chekker om posten eksisterer, hvis ikke MsgBox "Forkert brugernavn eller adgangskode", hvis den gør chekker den rang-feltet i db'en. Hvis rang = 1 sender den brugeren til frmBruger, hvis rang = 2, sender den brugeren til frmAdmin. I frmAdmin skal man kunne slette brugere og give brugere admin-status.
If DB_Chk_User("Tabel1", "User", "Pass") Then MsgBox "Ok" 'Her kan du loade din forml Else MsgBox "Error" End If
Public Function DB_Chk_User(ByVal strTabel As String, ByVal strUser As String, ByVal strPass As String) As Boolean Dim strDSN As String Dim strSQL As String
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.