19. april 2004 - 09:49Der er
19 kommentarer og 1 løsning
Check ting fra flere tabeller
Jeg er ved at lave et system som skal bruges til at logge ind med. Man har en stregkode og den logger man så ind med.
Mit problem er at få det registreret at man har logget ind pga jeg har 3 tabeller som den bruger til det.
Databasen ser sådan her ud: Tabel - Felter Bruger - Id/Navn/Stregkode Bruger_Dato - Id/BrugerID (samme id som det fra Bruger)/Dato Bruger_Tid - Id/DatoID (samme id som det fra Bruger_Dato)/AnkomstTid/GaaTid
Jeg har fået den til at checke om Stregkoden er rigtig, men det er når jeg skal tilføje/checke om der er en dato for den bruger og så checke om der er sat nogen tid ind det går galt.
Jeg har prøvet at bruge loops men det er ikke så nemt igen da der skal laves 2.
Har tænkt på om det kunne laves i SQL men jeg kender ikke til en metode der virker, og det er første gang jeg prøvet det her.
Jeg kan ikke lige bruge det til noget da det er tiden(fx 10:00) som skal bruges til at registrere brugeren og de 2 tabeller skal være relateret så man kan se hvad dato/tid der passer til hvilken bruger.
<-- Ideen er at checke om der er en tid i forvejen og hvad type den er.
Hvis den er komme - skal den nye være gå og omvendt -->
Fordi man ikke kan bruge true/false er os fordi man skulle kunne logge ind og ud flere gange på en dag (hvis folk ryger skal de stemple ud og så ind igen når de er færdige)
hvis du henter databasen ovenfor igen og bruger denne kode vil der skiftevis blive lavet en registrering på komme og gå uden at brugeren skal tænke over det.
Hvis der ingen registrering er på brugeren vil det blive en ind registrering. Om det er hensigstmæssigt ved jeg ikke - man kunne også lave en option box til det
<% Option explicit
dim oConn dim oRsBruger dim oRsReg dim strSqlBruger dim strSqlReg dim strSqlWriteReg dim bruger_navn dim bruger_id dim bruger_kode dim dato_tid
If request.ServerVariables("REQUEST_METHOD") = "POST" then ' hent data fra form bruger_navn = replace(request.Form("navn"),"'","") bruger_kode = replace(request.form("kode"),"'","") ' felter skal være udfyldt if (trim(bruger_navn) = "") or (trim(bruger_kode) = "") then response.write("Forkert navn og kode") response.End() end if
' find bruger Set oConn = Server.CreateObject("ADODB.Connection") oConn.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\") & "\..\db\jobreg.mdb;PWD=admin;" strSqlBruger = "SELECT * FROM [tbl_bruger] WHERE [bruger_navn] = '" & bruger_navn & "' AND [bruger_kode] = '" & bruger_kode & "';" set oRsBruger = oConn.execute(strSqlBruger)
' bruger ikke fundet if oRSBruger.eof then Response.Write("Forkert navn og kode") else ' find registreringer på bruger ' sorter med nyeste øverst bruger_id = oRsBruger("bruger_id") strSqlReg = "SELECT * FROM [tbl_Reg] WHERE [bruger_id] = " & bruger_id & " ORDER BY [dato] DESC;" set oRsReg = oConn.execute(strSqlReg)
'registrering dato_tid = "#" & now & "#"
' første kørsel findes ingen registreringer for bruger if oRsReg.eof then 'opret ny komme registrering strSqlWriteReg = "INSERT INTO [tbl_reg] (bruger_id, dato, ind, ud) VALUES (" & bruger_id & "," & dato_tid & ",-1,0);" ' efterfølgende kørsler else 'kontroller om den seneste er en ind eller ud registrering if oRsReg("ind") = -1 then '<-- så var sidste registrering en ind registrering strSqlWriteReg = "INSERT INTO [tbl_reg] (bruger_id, dato, ind, ud) VALUES (" & bruger_id & "," & dato_tid & ",0,-1);" else '<-- så var sidste registrering en ud registrering strSqlWriteReg = "INSERT INTO [tbl_reg] (bruger_id, dato, ind, ud) VALUES (" & bruger_id & "," & dato_tid & ",-1,0);" end if end if 'opdater databasen oConn.execute (strSqlWriteReg) oRsReg.close set oRsReg = nothing end if
oRsBruger.close
oConn.close set oRsBruger = nothing set oConn = nothing set strSqlBruger = nothing set strSqlReg = nothing set strSqlWriteReg = nothing
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.