Avatar billede bobbedude Nybegynder
16. april 2002 - 19:32 Der er 9 kommentarer og
1 løsning

SQL ud fra Session

Øverst på min side har jeg dette, hvilket gør det muligt at gå frem og vise forrige post samtidig.
Det virker ok. Jeg har en dropdown boks hvor man kan vælge sotering, alt efter hvad man vælger kan værdien blive 1,2 eller 3
denne værdi bliver placeret i en session.
Hvordan får jeg den til at tage en anden SQL afhængig af hvad man har i session ???


//Dette er i toppen af siden
if (Request.ServerVariables("REQUEST_METHOD") = "POST") then
oldID = Request.Form("thisID")
else
oldID = 0
end if

set connect = server.createobject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")

Connect.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("letter.mdb")

strSQL = "SELECT TOP 1, * FROM notes WHERE ID > "& oldID & ";"
Set rs = Connect.Execute(strSQL)
if rs.EOF then
strSQL = "SELECT TOP 1, * FROM notes;"
Set rs = Connect.Execute(strSQL)
end if

if NOT rs.EOF then
oldID = rs("ID")


//Dette er i bunden af siden
end if

rs.close
Connect.Close
Avatar billede omgangsdyret Nybegynder
16. april 2002 - 19:50 #1
svar FX:
strSQL = "select * form tabel where id = " & session("sessionnavn")

hvis ikke d virker så prøv dette:

strSQL = "select * form tabel where id = '" & session("sessionnavn") & "'

/Omgangsdyret
Avatar billede omgangsdyret Nybegynder
16. april 2002 - 19:51 #2
V ik lige hvorfor jeg skrev svar:>
er lidt træt...:)
Avatar billede eagleeye Praktikant
16. april 2002 - 21:51 #3
mener du noget i denne stil:

select case Session("sessionvariable")
case 1
  strSQL = "SELECT * FROM notes WHERE ID > "& oldID & ";"
case 2
  strSQL = "SELECT * FROM notes WHERE ID > "& oldID & " ORDER BY ID DESC;"
case 3
  strSQL = "SELECT * FROM notes;"
end select

set rs = connection.execute(strSQL)
Avatar billede bobbedude Nybegynder
17. april 2002 - 07:25 #4
eagleeye >> Jeg prøvede det du skrev inden jeg postede her, og fik fejlen.
Operation not allowed when the Obejct is closed. Den hendviste til den sidste rs.close i bunden af siden. Hvis jeg fjerner den så kommer der bare en blank side, eller også kan den kører alle poster igennem men ikke starte forfra igen.
Avatar billede eagleeye Praktikant
17. april 2002 - 08:38 #5
Hvad havde du i tankerne omkring de 3 SQL sætninger, hvad skal du vælge??

Jeg gættede bare på 3 SQL sætniger ud fra den du har i forvejsen:

strSQL = "SELECT TOP 1, * FROM notes WHERE ID > "& oldID & ";"
Set rs = Connect.Execute(strSQL)
if rs.EOF then
strSQL = "SELECT TOP 1, * FROM notes;"
Set rs = Connect.Execute(strSQL)
end if

Jeg gik ud fra at det måske var denne: strSQL = "SELECT TOP 1, * FROM notes WHERE ID > "& oldID & ";"
du ville havde del op i 3 forskellige SQL sætninger, er det rigtigt?

så den samlede fil vil se ud som  sådan:


//Dette er i toppen af siden
if (Request.ServerVariables("REQUEST_METHOD") = "POST") then
oldID = Request.Form("thisID")
else
oldID = 0
end if

set connect = server.createobject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")

Connect.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("letter.mdb")

select case Session("sessionvariable")
case 1
  strSQL = "SELECT * FROM notes WHERE ID > "& oldID & ";"
case 2
  strSQL = "SELECT * FROM notes WHERE ID < "& oldID & " ORDER BY ID DESC;"
case 3
  strSQL = "SELECT * FROM notes;"
end select

Set rs = Connect.Execute(strSQL)
if rs.EOF then
  strSQL = "SELECT TOP 1, * FROM notes;"
  Set rs = Connect.Execute(strSQL)
end if

if NOT rs.EOF then
oldID = rs("ID")


//Dette er i bunden af siden
end if

rs.close
Connect.Close
Avatar billede bobbedude Nybegynder
17. april 2002 - 09:23 #6
eagleeye >>

Jeg skal bruge både

strSQL = "SELECT TOP 1, * FROM notes WHERE ID > "& oldID & ";"

strSQL = "SELECT TOP 1, * FROM notes;"

Nummr 2 SQL er så den kan begynde forfra hvis man har bladret alle records igennem.
Avatar billede eagleeye Praktikant
17. april 2002 - 09:29 #7
så du har 2 værdier for sesion variablen:


//Dette er i toppen af siden
if (Request.ServerVariables("REQUEST_METHOD") = "POST") then
oldID = Request.Form("thisID")
else
oldID = 0
end if

set connect = server.createobject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")

Connect.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("letter.mdb")

select case Session("sessionvariable")
case 1
  strSQL = "SELECT TOP 1, * FROM notes WHERE ID > "& oldID & ";"
case 2
  strSQL = "SELECT TOP 1, * FROM notes;"
end select
Set rs = Connect.Execute(strSQL)

if NOT rs.EOF then
oldID = rs("ID")


//Dette er i bunden af siden
end if

rs.close
Connect.Close
Avatar billede bobbedude Nybegynder
17. april 2002 - 16:53 #8
Her scriptet som jeg har i toppen af siden:

<%
if request("sex") = "1" then
session("sex") = "M"
end if
if request("sex") = "2" then
session("sex") = "K"
end if
if request("sex") = "0" then
session("sex") = "A"
end if
if request("sex") = "" then
session("sex") = "A"
end if


if (Request.ServerVariables("REQUEST_METHOD") = "POST") then
oldID = Request.Form("thisID")
else
oldID = 0
end if

set connect = server.createobject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")

Connect.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("maps.mdb")


select case Session("sex")
case M
  strSQL = "SELECT TOP 1, * FROM maps WHERE ID > "& oldID & ";"
case K
  strSQL = "SELECT TOP 1, * FROM maps WHERE ID > "& oldID & ";"
case A
  strSQL = "SELECT TOP 1, * FROM maps WHERE ID > "& oldID & ";"
end select

'strSQL = "SELECT TOP 1, * FROM maps WHERE ID > "& oldID & ";"

Set rs = Connect.Execute(strSQL)
if rs.EOF then


select case Session("sex")
case M
  strSQL = "SELECT TOP 1, * FROM maps;"
case K
  strSQL = "SELECT TOP 1, * FROM maps;"
case A
  strSQL = "SELECT TOP 1, * FROM maps;"
end select

  'strSQL = "SELECT TOP 1, * FROM maps;"
  Set rs = Connect.Execute(strSQL)
end if

if NOT rs.EOF then
  oldID = rs("ID")
 
 
 
%>


det giver denne fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e0c'

Command text was not set for the command object.

/hot-or-not/default.asp, line 39


line 39 = Set rs = Connect.Execute(strSQL)
Avatar billede bobbedude Nybegynder
17. april 2002 - 17:12 #9
Lukker lige spørgsmålet da jeg lige skal tænke om jeg vil lave en anden løsning.
Avatar billede eagleeye Praktikant
17. april 2002 - 18:08 #10
Hvis du har bofstaver i din case så skal der også "" omkring dem... "M", "A", osv... så
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