Avatar billede bobbedude Nybegynder
01. marts 2002 - 19:13 Der er 5 kommentarer og
2 løsninger

Finde den første ID

Jeg har en nyheds side hvor jeg kan slette nyheder.
Jeg ville gerne have et link fra forsiden der hedder Vis alle Nyheder.
Normalt kaldes siden med
arkiv.asp?id=9
jeg ville gerne kunne kalde den med
arkiv.asp
Men så får jeg en fejl med at der ikke er angivet noget id.

Så prøvede jeg:

id = request("id")
if request("id") = "" then
Set rs= Connect.Execute("SELECT TOP 1 FROM tnyheder ORDER BY id ASC")
id = rs("id")
set rs = Nothing
end if

men det giver fejlen:

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

[Microsoft][ODBC Microsoft Access Driver] The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.

/arkiv.asp, line 41


Linie 41 er Set rs= Connect.Execute("SELECT TOP 1 FROM tnyheder ORDER BY id ASC")


Hvad er der galt ??
Avatar billede sorenmt84 Juniormester
01. marts 2002 - 19:22 #1
Prøv med:

Set rs= Connect.Execute("SELECT TOP 1 * FROM tnyheder ORDER BY id ASC")
Avatar billede bobbedude Nybegynder
01. marts 2002 - 19:26 #2
giver fejlen:

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
Avatar billede sorenmt84 Juniormester
01. marts 2002 - 19:28 #3
Jeg ved det ikke, men kan det ikke være fordi at du har en request("id"), mens du også vil sorter efter "id"

hvis du så går ind på siden sådan:
side.asp?id=1

Så vil det jo være det samme som at sige:
Set rs= Connect.Execute("SELECT TOP 1 FROM tnyheder ORDER BY '1' ASC")
Avatar billede bobbedude Nybegynder
01. marts 2002 - 19:30 #4
Hvis jeg bare skriver Set rs= Connect.Execute("SELECT top 1 * FROM tnyheder")
Får jeg samme fejl
Avatar billede sorenmt84 Juniormester
01. marts 2002 - 19:33 #5
Prøv det her, jeg tror det kan det du skal bruge, dog skal det lige tilpasses:

id = request("id")
if id = "" then
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("db.mdb")
strSQL = "select * from tabel order by id ASC"
set rs = Conn.execute(strSQL)
if rs.EOF then
Response.write "Databasen er tom...>"
else
Do Until rs.EOF

RS.MoveNext
Loop
end if
Conn.Close
Set Conn = Nothing

else
set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db.mdb")
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM tabel WHERE ID=" & id, Conn, 1, 3
rs.Close
set rs = nothing
Conn.Close
set Conn = nothing
end if
Avatar billede erikjacobsen Ekspert
02. marts 2002 - 00:24 #6
Har du et felt med navnet "id" i din tnyheder ?
Avatar billede coltau Juniormester
02. marts 2002 - 11:08 #7
For at undgå de to fejl du beskriver skal linierne se således ud:

Set rs= Connect.Execute("SELECT TOP 1 * FROM tnyheder ORDER BY id ASC") ' * Manglede
if not RS.EOF then
  id = rs("id") ' Må kun anvendes hvis RS ikke er tom
end if
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