Avatar billede nummer8 Nybegynder
19. april 2004 - 09:49 Der 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.
Avatar billede nummer8 Nybegynder
19. april 2004 - 09:50 #1
Ide til en anden måde at lave databasen på kan også bruges, men Bruger tabellen skal være for sig selv.
Avatar billede vbcoder Nybegynder
19. april 2004 - 10:17 #2
Jeg har lavet et forslag til dig

kig på databasen http://visualcoder.dk/download/jobreg/jobreg.mdb
Avatar billede nummer8 Nybegynder
19. april 2004 - 10:28 #3
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.
Avatar billede nummer8 Nybegynder
19. april 2004 - 10:30 #4
Jeg havde os lige selv tænkt på at lave det om så der kun var 2 tabeller og det har jeg så os gjort sådan her, da det ville være nemmere at bruge.

Databasen:
Tabel - Felter
Bruger - Id/Navn/Stregkode
Bruger_Tid - Id/BrugerID (samme id som det fra Bruger)/Dato/AnkomstTid/GaaTid
Avatar billede vbcoder Nybegynder
19. april 2004 - 10:36 #5
Jeg tror bare jeg glemte at smide bruger_id i den anden tabel

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
Avatar billede nummer8 Nybegynder
19. april 2004 - 10:40 #6
Jeg forstår ikke helt hvad du mener her:

<--
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)
Avatar billede vbcoder Nybegynder
19. april 2004 - 10:42 #7
jeg er lige ved at lave et eksempel til dig
Avatar billede vbcoder Nybegynder
19. april 2004 - 11:37 #8
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

Else
%>
<form name="form1" method="post" action="">
  <p>Navn<br>
    <input type="text" name="navn">
    <br>
    Kode
    <br>
    <input type="text" name="kode">
  </p>
  <p>
    <input type="submit" name="Submit" value="Registrering" action="default.asp">
</p>
  <p>&nbsp;
    </p>
  <p>&nbsp;    </p>
</form>
<% End if %>
Avatar billede vbcoder Nybegynder
19. april 2004 - 11:38 #9
form koden skal lige tilpasses lidt kan jeg se

<form name="form1" method="post" action="">
  <p>Navn<br>
    <input type="text" name="navn">
    <br>
    Kode
    <br>
    <input type="text" name="kode">
  </p>
  <p>
    <input type="submit" name="Submit" value="Registrering">
</p>
  <p>&nbsp;
    </p>
  <p>&nbsp;    </p>
</form>
Avatar billede vbcoder Nybegynder
19. april 2004 - 11:40 #10
Server.Mappath skal jo også tilpasse til din server. Jeg har databaser liggende udenfor den virtuelle sti til www'en så min hedder

Server.MapPath("\") & "\..\db\jobreg.mdb;PWD=admin;"

Det skal lige tilpasse for at det fungerer
Avatar billede vbcoder Nybegynder
19. april 2004 - 12:00 #11
du kan teste den på www.visualcoder.dk/download/jobreg
Avatar billede nummer8 Nybegynder
19. april 2004 - 12:23 #12
Jeg har lige haft pause men ser på det nu.. bliver nok lige lidt tid men det der ser sådan set ud til at skulle virke med mit ;)
Avatar billede nummer8 Nybegynder
19. april 2004 - 14:07 #13
Ville gerne vide hvorfor du har "#" med der -> dato_tid = "#" & now & "#"
Avatar billede vbcoder Nybegynder
19. april 2004 - 14:34 #14
Det er fordi jeg har lavet feltet dato i tbl_reg i dato/tid format.

Når man skal gemme en dato/tid streng i databasen skal den være omgivet af #.

Grunden til at feltet er dato/tid er at man ellers ikke kan sortere dem korrekt i dato og tidsrækkefølge
Avatar billede vbcoder Nybegynder
19. april 2004 - 14:35 #15
<form name="form1" method="post" action=""> skal du indsætte i action hvad du kalder filen f.x. reg.asp eller hvad du har lyst til.
Avatar billede nummer8 Nybegynder
19. april 2004 - 14:46 #16
hmm sjovt det mener jeg aldrig jeg har brugt, men det er nok os fordi jeg normalt har haft en standart værdi(=Now()) i databasen ;)

Det ved jeg godt:
<form name="form1" method="post" action=""> skal du indsætte i action hvad du kalder filen f.x. reg.asp eller hvad du har lyst til.
Avatar billede vbcoder Nybegynder
19. april 2004 - 14:49 #17
det med 'havelågerne' er fordi sql'en ellers brokker sig når man forsøger at gemme data'ene
Avatar billede nummer8 Nybegynder
19. april 2004 - 15:12 #18
Hvis du lige svare kan du få nogle points :>
Avatar billede vbcoder Nybegynder
19. april 2004 - 15:22 #19
det var godt du kunne bruge det ;-)
Avatar billede nummer8 Nybegynder
21. april 2004 - 09:50 #20
Se evt. dette her vbcoder hvis du har tid ;)
http://www.eksperten.dk/spm/491674
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
Kurser inden for grundlæggende programmering

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