22. september 2008 - 13:41
Der er
12 kommentarer
Når en uerfaren prøver :o)
Hej Er der nogen der kan tilrette dette så det virker? Jeg får nogle værdier "post" fra noget flash og det skal så lige behandles lidt inden det skal i databasen. Jeg forsøger at tælle på hvor mange gange email adressen findes i databasen. 0 gange "insert" på normal vis, hvis den findes skal der "update" ved at tælle antal 1 op. Dette må ske op til 25 gange. Hvis jeg fjerner hele count delen fungerer det hele fint! Connectionstring og DoQuotes er sat op i seperat fil. Er der nogle eksperter der kan hjælpe? :o) dim checkSQL dim rs dim sAntal dim sUge dim sSQL dim sNavn dim sEmail dim sNyhed dim sCompetition if Request.Form <> "" then sNavn = Request.Form("navn") sEmail = Request.Form("email") sNyhed = Request.Form("nyhed") sCompetition = "test" sUge = "39" sAntal = "1" checkSQL = "SELECT COUNT (Email) FROM Results WHERE Email=" & sEmail set rs = cnnTarget.execute(checkSQL) if rs = 0 then sSQL = "INSERT INTO Results (Navn, Email, Nyhedsbrev, Antal, Uge, Konkurrence) VALUES (" sSQL = sSQL & "'" & Left(DoQuotes(sNavn), 200) & "'," sSQL = sSQL & "'" & Left(DoQuotes(sEmail), 200) & "'," sSQL = sSQL & "'" & Left(DoQuotes(sNyhed), 50) & "'," sSQL = sSQL & "'" & Left(DoQuotes(sAntal), 50) & "'," sSQL = sSQL & "'" & sUge & "'," sSQL = sSQL & "'" & Left(DoQuotes(sCompetition), 200) & "')" cnnTarget.execute sSQL response.write("<OK />") else if rs > 0 and rs < 26 sSQL = "UPDATE Results SET Antal = "rs + 1" WHERE Email= " & sEmail cnnTarget.execute sSQL response.write("<OK />") else response.write("ERROR") end if else response.write("ERROR") end if cnnTarget.close set cnnTarget = nothing
Annonceindlæg fra Cognizant
22. september 2008 - 13:49
#1
Nu har jeg ikke checket alt igennem, men skal email ikke i ' eller "? checkSQL = "SELECT COUNT (Email) FROM Results WHERE Email='" & sEmail &"'"
22. september 2008 - 14:00
#2
Prøv at skifte SQL sætningen ud med: "SELECT COUNT(Email) AS EmailCount..." , og check på RS("EmailCount") de steder hvor du blot checker RS for en værdi. RS er dit recordset object, og ikke den specifikke count du får retur, som findes inden i dit recordset.
22. september 2008 - 14:15
#3
Så ser det sådan ud, men det virker forsat ikke: <%@ Language=VBScript %> <!--#include file="dataaccess.asp"--> <% dim checkSQL dim rs dim sAntal dim sUge dim sSQL dim sNavn dim sEmail dim sNyhed dim sCompetition if Request.Form <> "" then sNavn = Request.Form("navn") sEmail = Request.Form("email") sNyhed = Request.Form("nyhed") sCompetition = "test" sUge = "39" sAntal = "1" checkSQL = "SELECT COUNT(Email) AS EmailCount FROM Results WHERE Email='" & sEmail &"'" set rs = cnnTarget.execute(checkSQL) if rs > 0 then sSQL = "INSERT INTO Results (Navn, Email, Nyhedsbrev, Antal, Uge, Konkurrence) VALUES (" sSQL = sSQL & "'" & Left(DoQuotes(sNavn), 200) & "'," sSQL = sSQL & "'" & Left(DoQuotes(sEmail), 200) & "'," sSQL = sSQL & "'" & Left(DoQuotes(sNyhed), 50) & "'," sSQL = sSQL & "'" & Left(DoQuotes(sAntal), 50) & "'," sSQL = sSQL & "'" & sUge & "'," sSQL = sSQL & "'" & Left(DoQuotes(sCompetition), 200) & "')" cnnTarget.execute sSQL response.write("<OK />") else if rs > 0 and rs < 26 sSQL = "UPDATE Results SET Antal = " & RS("EmailCount") & " WHERE Email = '" & sEmail &"'" cnnTarget.execute sSQL response.write("<OK />") else response.write("ERROR") end if else response.write("ERROR") end if cnnTarget.close set cnnTarget = nothing %>
22. september 2008 - 14:30
#4
Så langt så godt, så mangler du bare at rette: if rs > 0 then til if rs("EmailCount") > 0 then og else if rs > 0 and rs < 26 til else if rs("EmailCount") > 0 and rs("EmailCount") < 26 ...så vil jeg tro det virker.
22. september 2008 - 19:58
#5
Så ser det sådan ud: <%@ Language=VBScript %> <!--#include file="dataaccess.asp"--> <% dim checkSQL dim rs dim sAntal dim sUge dim sSQL dim sNavn dim sEmail dim sNyhed dim sCompetition if Request.Form <> "" then sNavn = Request.Form("navn") sEmail = Request.Form("email") sNyhed = Request.Form("nyhed") sCompetition = "test" ' sUge = datepart("ww", now, 2, 2) sUge = "39" sAntal = "1" checkSQL = "SELECT COUNT(Email) AS EmailCount FROM Results WHERE Email='" & sEmail &"'" set rs = cnnTarget.execute(checkSQL) if rs("EmailCount") > 0 then sSQL = "INSERT INTO Results (Navn, Email, Nyhedsbrev, Antal, Uge, Konkurrence) VALUES (" sSQL = sSQL & "'" & Left(DoQuotes(sNavn), 200) & "'," sSQL = sSQL & "'" & Left(DoQuotes(sEmail), 200) & "'," sSQL = sSQL & "'" & Left(DoQuotes(sNyhed), 50) & "'," sSQL = sSQL & "'" & Left(DoQuotes(sAntal), 50) & "'," sSQL = sSQL & "'" & sUge & "'," sSQL = sSQL & "'" & Left(DoQuotes(sCompetition), 200) & "')" cnnTarget.execute sSQL response.write("<OK />") else if rs("EmailCount") > 0 and rs("EmailCount") < 26 sSQL = "UPDATE Results SET Antal = " & rs("EmailCount") & " WHERE Email = '" & sEmail &"'" cnnTarget.execute sSQL response.write("<OK />") else response.write("ERROR") end if else response.write("ERROR") end if cnnTarget.close set cnnTarget = nothing %> Men der kommer forsat ikke noget i database :oS
22. september 2008 - 20:36
#6
Prøv at udskrive RS("EmailCount") og se hvad den indeholder. Sammenhold det evt. med hvad du har af data i databasen, som matcher din SQL og se om de to værdier stemmer overens.
22. september 2008 - 22:36
#7
prøv at rette dette: else if rs("EmailCount") > 0 and rs("EmailCount") < 26 sSQL = "UPDATE Results SET Antal = " & rs("EmailCount") & " WHERE Email = '" & sEmail &"'" cnnTarget.execute sSQL Til: else if rs("EmailCount") > 0 and rs("EmailCount") < 24 Then sSQL = "UPDATE Results SET Antal = " & cInt(rs("EmailCount"))+1 & " WHERE Email = '" & sEmail &"'" cnnTarget.execute sSQL
23. september 2008 - 10:12
#8
det skal være elseif rs("EmailCount") > 0 and rs("EmailCount") < 24 sSQL = "UPDATE Results SET Antal = " & cInt(rs("EmailCount"))+1 & " WHERE Email = '" & sEmail &"'" cnnTarget.execute sSQL
23. september 2008 - 21:30
#9
<%@ Language=VBScript %> <!--#include file="dataaccess.asp"--> <% dim checkSQL dim rs dim sAntal dim sUge dim sSQL dim sNavn dim sEmail dim sNyhed dim sCompetition if Request.Form <> "" then sNavn = Request.Form("navn") sEmail = Request.Form("email") sNyhed = Request.Form("nyhed") sCompetition = "test" sUge = "39" sAntal = "1" checkSQL = "SELECT COUNT(Email) AS EmailCount FROM Results WHERE Email='" & sEmail &"'" set rs = cnnTarget.execute(checkSQL) if rs("EmailCount") > "0" then sSQL = "INSERT INTO Results (Navn, Email, Nyhedsbrev, Antal, Uge, Konkurrence) VALUES (" sSQL = sSQL & "'" & Left(DoQuotes(sNavn), 200) & "'," sSQL = sSQL & "'" & Left(DoQuotes(sEmail), 200) & "'," sSQL = sSQL & "'" & Left(DoQuotes(sNyhed), 50) & "'," sSQL = sSQL & "'" & Left(DoQuotes(sAntal), 50) & "'," sSQL = sSQL & "'" & sUge & "'," sSQL = sSQL & "'" & Left(DoQuotes(sCompetition), 200) & "')" cnnTarget.execute sSQL response.write("<OK />") elseif rs("EmailCount") > "0" and rs("EmailCount") < "26" sSQL = "UPDATE Results SET Antal = " & cInt(rs("EmailCount"))+1 & " WHERE Email = '" & sEmail &"'" cnnTarget.execute sSQL else response.write("ERROR") end if else response.write("ERROR") end if cnnTarget.close set cnnTarget = nothing %> Virker desværre heller ikke! :o(
23. september 2008 - 21:52
#10
prøv at skriv sSQL ud. og fjern din execute
29. september 2008 - 10:07
#11
Så virker det, skal skal prøve et svar for at kunne give point :)
29. september 2008 - 10:16
#12
Her er et svar hvis du kunne bruge mine forslag til noget. Deler gerne med de andre deltagere i spørgsmålet.
Kurser inden for grundlæggende programmering