Avatar billede steffansteffan Nybegynder
28. september 2004 - 16:03 Der er 15 kommentarer og
1 løsning

IF-Sætning i SQL?

Jeg har lavet denne kode som pluser nogle point sammen.

id = Request.QueryString("id")
Set connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/forum1.mdb")
sql = "Select sum(hits) as hitsfound From links where BrugerID = " & ID & ";"
Set rs3 = Server.CreateObject("ADODB.Recordset")
set rs3 = Connect.execute(SQL)

Problemet er bare at hvis databasen ikke indeholder et bestemt id for man fejlen.
Invalid use of Null: 'Round'

Så tænkte jeg kan man smække en IF-Sætning ind så den tager en anden SQL-Sætning hvis ikke databasen indeholder et bestemte ID.
Noget i denne stil.
<%
id = Request.QueryString("id")
Set connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/forum1.mdb")

if rs("brugerID") = ID then
sql = "Select sum(hits) as hitsfound From links where BrugerID = " & ID & ";"
else
sql = "Select sum(hits) as hitsfound From links where BrugerID = fasdinhfiosd"

Set rs3 = Server.CreateObject("ADODB.Recordset")
set rs3 = Connect.execute(SQL)
%>
Avatar billede eagleeye Praktikant
28. september 2004 - 16:54 #1
Hvis du vil tjekke om ID findes må man først lave en SQL sætning som henter ID'et og så tjekke om det findes. Så udføre SQL'en.

Alternativt kan du udføre den SQL sætning du har og hvis det giver Null sætte det lig 0:

sql = "Select sum(hits) as hitsfound From links where BrugerID = " & ID & ";"
Set rs3 = Server.CreateObject("ADODB.Recordset")
hitsfound=rs3("hitsfound")
if isNull(hitsfound) then hitsfound=0

og så bruge hitsfound i din kode
Avatar billede steffansteffan Nybegynder
28. september 2004 - 17:12 #2
Skal den så skrives sådan her? For fejl i den?
<%
id = Request.QueryString("id")
Set connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/forum1.mdb")
sql = "Select sum(hits) as hitsfound From links where BrugerID = " & ID & ";"
Set rs3 = Server.CreateObject("ADODB.Recordset")
hitsfound=rs3("hitsfound")
if isNull(hitsfound) then hitsfound=0
%>
Avatar billede eagleeye Praktikant
28. september 2004 - 17:13 #3
hov jeg glemt en linje:  set rs3 = Connect.execute(SQL)
Prøv sådan her:


<%
id = Request.QueryString("id")
Set connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/forum1.mdb")
sql = "Select sum(hits) as hitsfound From links where BrugerID = " & ID & ";"
Set rs3 = Server.CreateObject("ADODB.Recordset")
set rs3 = Connect.execute(SQL)
hitsfound=rs3("hitsfound")
if isNull(hitsfound) then hitsfound=0
%>
Avatar billede steffansteffan Nybegynder
28. september 2004 - 17:21 #4
Så virkede den men vil gerne havde den til og vise talet hvis den vfinder et id.
Kan jeg ikke gøre det i en kode i stil med sådan noget her:
<%
id = Request.QueryString("id")
Set connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/forum1.mdb")
sql = "Select sum(hits) as hitsfound From links where BrugerID = " & ID & ";"
Set rs3 = Server.CreateObject("ADODB.Recordset")
set rs3 = Connect.execute(SQL)
hitsfound=rs3("hitsfound")
if isNull(hitsfound) then hitsfound=0 else Round((rs3("hitsfound") * 0.2), 2)
%>
Avatar billede eagleeye Praktikant
28. september 2004 - 17:23 #5
Jo det kan du, prøv at skrive if sætningen som

if isNull(hitsfound) then
  hitsfound=0
else
  hitsfound=Round((rs3("hitsfound") * 0.2), 2)
end if
Avatar billede steffansteffan Nybegynder
28. september 2004 - 17:28 #6
Den udskriver ikke noget den skriver bare en blank tabel.
<%
id = Request.QueryString("id")
Set connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/forum1.mdb")
sql = "Select sum(hits) as hitsfound From links where BrugerID = " & ID & ";"
Set rs3 = Server.CreateObject("ADODB.Recordset")
set rs3 = Connect.execute(SQL)
hitsfound=rs3("hitsfound")
%>
<%
if isNull(hitsfound) then
  hitsfound=0
else
  hitsfound=Round((rs3("hitsfound") * 0.2), 2)
end if
%>
Avatar billede eagleeye Praktikant
28. september 2004 - 17:30 #7
Så skal du tilføje en response.write til sidste:


<%
if isNull(hitsfound) then
  hitsfound=0
else
  hitsfound=Round((rs3("hitsfound") * 0.2), 2)
end if
Response.write hitsfound
%>
Avatar billede steffansteffan Nybegynder
28. september 2004 - 17:30 #8
Altså vil gerne ha den til og.
Hvis ikke der er noget ID skal den bare skrive 0 men hvis der er et ID skal den udregne med.
Round((rs3("hitsfound") * 0.2), 2)
og f.eks. udskrive 9 Point.
Avatar billede steffansteffan Nybegynder
28. september 2004 - 17:31 #9
okay så var den der, tjekker lige det hele igennem. og sætter det sammen med resten af min kode.
Avatar billede steffansteffan Nybegynder
28. september 2004 - 17:40 #10
Så er der lige den sidste ting ville være super hvis du ville hjælpe mig med det.
Nu virker den ene men vil gerne havde to der i.

<%
id = Request.QueryString("id")
Set connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/forum1.mdb")
sql = "Select sum(hits) as hitsfound From links where BrugerID = " & ID & ";"
Set rs3 = Server.CreateObject("ADODB.Recordset")
set rs3 = Connect.execute(SQL)
hitsfound=rs3("hitsfound")
if isNull(hitsfound) then
  hitsfound=0
else
  hitsfound=Round((rs3("hitsfound") * 0.2), 2)
end if

sql = "Select count(*) as found From kommentare where BrugerID = " & ID & ";"
Set rs32 = Server.CreateObject("ADODB.Recordset")
set rs32 = Connect.execute(SQL)

sql = "Select count(*) as found From emner where BrugerID = " & ID & ";"
Set rs33 = Server.CreateObject("ADODB.Recordset")
set rs33 = Connect.execute(SQL)
%>

Altså hvis ikke de heller ikke har et ID skal der hvis hul.
Og så vil jeg gerne havde det hele pluset sammen tilsidst. noget i stil med dette.
Round((rs3("hitsfound") * 0.2 + ((rs32("found"))) + ((rs33("found"))) * 3), 2)

Håber meget du vil kigge på den, ville bare være perfekt.
Håber du forstår hvor jeg vil hen.
Avatar billede eagleeye Praktikant
28. september 2004 - 17:45 #11
Så det på samme måde for de to andre:

sql = "Select count(*) as found From kommentare where BrugerID = " & ID & ";"
Set rs32 = Server.CreateObject("ADODB.Recordset")
set rs32 = Connect.execute(SQL)
kommentarefound=rs32("found")
if isNull(kommentarefound) then
  kommentarefound=0
else
  kommentarefound=Round((rs32("found") * 0.2), 2)
end if

sql = "Select count(*) as found From emner where BrugerID = " & ID & ";"
Set rs33 = Server.CreateObject("ADODB.Recordset")
set rs33 = Connect.execute(SQL)
emnerfound=rs33("found")
if isNull(emnerfound) then
  emnerfound=0
else
  emnerfound=Round((rs33("found") * 0.2), 2)
end if



Så kan du rette denne:
Round((rs3("hitsfound") * 0.2 + ((rs32("found"))) + ((rs33("found"))) * 3), 2)

Til denne så den bruger de varible som tallene nu ligger i:
Round((hitsfound *0.2 + kommentarefound + emnerfound* 3), 2)
Avatar billede steffansteffan Nybegynder
28. september 2004 - 17:55 #12
Jeg skriver dette der kommet fejl i linjen:
hitsfound=Round((rs3("hitsfound") * 0.2 + ), 2)

fejlen er:
Syntax error Hvis det siger dig noget.

<%
id = Request.QueryString("id")
Set connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/forum1.mdb")
sql = "Select sum(hits) as hitsfound From links where BrugerID = " & ID & ";"
Set rs3 = Server.CreateObject("ADODB.Recordset")
set rs3 = Connect.execute(SQL)
hitsfound=rs3("hitsfound")
if isNull(hitsfound) then
  hitsfound=0
else
  hitsfound=Round((rs3("hitsfound") * 0.2 + ), 2)
end if

sql = "Select count(*) as found From kommentare where BrugerID = " & ID & ";"
Set rs32 = Server.CreateObject("ADODB.Recordset")
set rs32 = Connect.execute(SQL)
kommentarefound=rs32("found")
if isNull(kommentarefound) then
  kommentarefound=0
else
  kommentarefound=Round((rs32("found") * 0.2), 2)
end if

sql = "Select count(*) as found From emner where BrugerID = " & ID & ";"
Set rs33 = Server.CreateObject("ADODB.Recordset")
set rs33 = Connect.execute(SQL)
emnerfound=rs33("found")
if isNull(emnerfound) then
  emnerfound=0
else
  emnerfound=Round((rs33("found") * 0.2), 2)
end if
%>     
<%
Response.write Round((hitsfound + kommentarefound + emnerfound), 2)
%>
Avatar billede eagleeye Praktikant
28. september 2004 - 18:00 #13
Linjen skal være sådan her:

  hitsfound=Round((rs3("hitsfound") * 0.2), 2)
Avatar billede eagleeye Praktikant
28. september 2004 - 18:01 #14
Hov, kommentare antalet skulle ikke gange med 0.2:
  kommentarefound=Round((rs32("found") * 0.2), 2)

Så prøve at rette det til:
  kommentarefound=Round((rs32("found")), 2)


Og på samme måde enme antallet skal ganges med 3:
  emnerfound=Round((rs33("found") * 3), 2)


jeg fik *0.2 copy/pastet med på dem alle.
Avatar billede steffansteffan Nybegynder
28. september 2004 - 18:11 #15
Det var det jeg takker mange gange for hjælpen endnu en gang :D
Avatar billede eagleeye Praktikant
28. september 2004 - 18:15 #16
Ok ;)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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