I en Access database har jeg 4 koloner: Navn, email, antal og dato(ugenummer)
Data kommer fra et website hvor brugere registrere sig på forskellige ting ved at afgive navn og email. Jeg vil gerne have lavet det sådan, at man max kan registrere en email 25 gange om ugen og til at holde styr på det ville jeg bruge ”antal” kolonnen.
Altså i stil med : Hvis email findes og antal er < 25 så antal = antal +1
' tjek først om der findes en række med dne pågældende email sql = "SELECT COUNT(*) FROM tabel WHERE email = ?" set cmd = Server.CreateObject("ADODB.Command") set cmd.ActiveConnection = dit_connectionobjekt cmd.Parameters.Append cmd.CreateParameter("@email", adVarChar, adParamInput, 255, email) set rs = cmd.Execute() doInsert = (clng(rs(0)) = 0) rs.close set rs = nothing
' Udfør derefter indsæt eller opdater alt efter udfaldet af ovenstående tjek. set cmd = Server.CreateObject("ADODB.Command") set cmd.ActiveConnection = dit_connectionobjekt
if doInsert then sql = "INSERT INTO tabel(navn,email,antal,dato) VALUES(?,?,1,now)" cmd.Parameters.Append cmd.CreateParameter("@navn", adVarChar, adParamInput, 255, navn) cmd.Parameters.Append cmd.CreateParameter("@email", adVarChar, adParamInput, 255, email) else sql = "UPDATE tabel SET antal = antal + 1 WHERE email = ?" cmd.Parameters.Append cmd.CreateParameter("@email", adVarChar, adParamInput, 255, email) end if
cmd.Execute
For at dette skal fungere, skal du have denne linie ind i enten global.asa (så skal du ikke tænke på den mere) eller i den fil hvor du benytter ADO-konstanter:
Ups! Jeg mangler lidt at tildele sql-sætningen til command-objektet - soorwy!
' tjek først om der findes en række med dne pågældende email sql = "SELECT COUNT(*) FROM tabel WHERE email = ?" set cmd = Server.CreateObject("ADODB.Command") set cmd.ActiveConnection = dit_connectionobjekt cmd.CommandText = sql cmd.CommandType = adCmdText cmd.Parameters.Append cmd.CreateParameter("@email", adVarChar, adParamInput, 255, email) set rs = cmd.Execute() doInsert = (clng(rs(0)) = 0) rs.close set rs = nothing
' Udfør derefter indsæt eller opdater alt efter udfaldet af ovenstående tjek. set cmd = Server.CreateObject("ADODB.Command") set cmd.ActiveConnection = dit_connectionobjekt cmd.CommandType = adCmdText
if doInsert then sql = "INSERT INTO tabel(navn,email,antal,dato) VALUES(?,?,1,now)" cmd.CommandText = sql cmd.Parameters.Append cmd.CreateParameter("@navn", adVarChar, adParamInput, 255, navn) cmd.Parameters.Append cmd.CreateParameter("@email", adVarChar, adParamInput, 255, email) else sql = "UPDATE tabel SET antal = antal + 1 WHERE email = ?" cmd.CommandText = sql cmd.Parameters.Append cmd.CreateParameter("@email", adVarChar, adParamInput, 255, email) end if cmd.Execute
Okey så er det lettere at prøve update først hvis den fejler så lav en insert.
Synes godt om
Ny brugerNybegynder
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.