28. september 2004 - 16:03Der 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) %>
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
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 %>
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 %>
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) %>
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 %>
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.
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.
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)
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) %>
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.