Avatar billede bobbedude Nybegynder
02. marts 2002 - 11:50 Der er 12 kommentarer og
3 løsninger

Arrg hvad går der galt ?

id = request("id")
if request("id") = "" then
Set rs= Connect.Execute("SELECT top 1 * FROM tnyheder ORDER BY dato DESC")
if not RS.EOF then
id = rs("id") ' Må kun anvendes hvis RS ikke er tom
set rs2 = connect.execute("SELECT * FROM tnyheder WHERE id LIKE '" & rs("id") & "'") 
else
set rs = connect.execute("SELECT * FROM tnyheder ORDER BY dato DESC")
set rs2 = connect.execute("SELECT * FROM tnyheder WHERE id LIKE '" & request("id") & "'")
end if
end if


Hvis jeg kalder arkiv.asp er der ingen fejl men hvis jeg bruger arkiv.asp?id=9 får jeg fejlen:

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'rs2'

/arkiv.asp, line 81


Linie 81 er det første sted rs2 bliver kaldt.
Avatar billede stig3 Mester
02. marts 2002 - 11:53 #1
Hvad med:
set rs2 = connect.execute("SELECT * FROM tnyheder WHERE id=" & rs("id") & ")"
Avatar billede tmceu Praktikant
02. marts 2002 - 11:54 #2
Det skyldes sandsynligvis enten at ID er et reserveret ord i din database (brug [ID] i stedet), eller at ID er et numerisk felt i databasen (fjern ' om ID i dit SQL statement).
Avatar billede stig3 Mester
02. marts 2002 - 11:55 #3
set rs2 = connect.execute("SELECT * FROM tnyheder WHERE id=" & rs("id"))
Avatar billede tmceu Praktikant
02. marts 2002 - 11:56 #4
Sorry, havde lige overset noget. Hvorfor bruger du LIKE ?

Brug i stedet = (hvis du vil bruge LIKE, er syntaksen eks. LIKE 'XX%'
Avatar billede bobbedude Nybegynder
02. marts 2002 - 12:01 #5
Har nu dette


id = request("id")
if request("id") = "" then
Set rs= Connect.Execute("SELECT top 1 * FROM tnyheder ORDER BY dato DESC")
if not RS.EOF then
id = rs("id") ' Må kun anvendes hvis RS ikke er tom
set rs2 = connect.execute("SELECT * FROM tnyheder WHERE [id] LIKE " & rs("id") & "") 
else
set rs = connect.execute("SELECT * FROM tnyheder ORDER BY dato DESC")
set rs2 = connect.execute("SELECT * FROM tnyheder WHERE [id] = " & request("id") & "")
end if
end if

Men det giver samme fejl ?

stig3 >> Hvis jeg gør som du siger virker det jo ikke da den skal fange id der bliver sendt med.
Avatar billede stig3 Mester
02. marts 2002 - 12:06 #6
Hvilken type har dit id-felt i db'en ?
Avatar billede tmceu Praktikant
02. marts 2002 - 12:07 #7
Er ID nummerisk eller tekst ?
Avatar billede bobbedude Nybegynder
02. marts 2002 - 12:09 #8
ID er autonummering altså tal
Avatar billede ellebaek Nybegynder
02. marts 2002 - 12:15 #9
sql = "SELECT * FROM Tnyheder WHERE id = 1"
eller
sql = "SELECT top 1 * FROM Tnyheder ORDER BY id ASC"
Avatar billede bobbedude Nybegynder
02. marts 2002 - 12:22 #10
ellebaek >> Det kan jeg ikke for jeg vil gerne have at man på forsiden kan klikke på en nyhed eg. arkiv.asp?id=9 OG AT man også kan vælge vis alle.
Avatar billede tmceu Praktikant
02. marts 2002 - 12:23 #11
Vil mene det skal se sådan ud:

id = request("id")
if request("id") = "" then
    Set rs= Connect.Execute("SELECT top 1 * FROM tnyheder ORDER BY dato DESC")
    if not RS.EOF then
        id = rs("id") ' Må kun anvendes hvis RS ikke er tom
        set rs2 = connect.execute("SELECT * FROM tnyheder WHERE [id] =" & rs("id")) 
    else
        set rs = connect.execute("SELECT * FROM tnyheder ORDER BY dato DESC")
        set rs2 = connect.execute("SELECT * FROM tnyheder WHERE [id] = " & request("id"))
    end if
end if

ellebaek >> dit sidste forslag er en meget dy måde at få en record på, da en order by koster i performance på databasen, hvorimod en ID=X udnytter indekset på tabellen :-)
Avatar billede tmceu Praktikant
02. marts 2002 - 12:24 #12
dy = dyr :-)
Avatar billede virus Nybegynder
02. marts 2002 - 12:27 #13
ID = Request("ID")

If IsNull(Request("ID")) Then

    Set RS = Connect.Execute("SELECT top 1 FROM tnyheder ORDER BY dato DESC")

        If Not RS.EOF Then
            ID1 = RS("ID")
           
            Set RS2 = Connect.Execute("SELECT * FROM tnyheder WHERE [id] LIKE " & ID1 ") 
       
        Else

            Set RS = Connect.Execute("SELECT * FROM tnyheder ORDER BY dato DESC")
            Set RS2 = Connect.Execute("SELECT * FROM tnyheder WHERE [id] = " & ID ")

        End If

End If

maybe? :)
Avatar billede bobbedude Nybegynder
02. marts 2002 - 12:27 #14
Ok har rodet med det det der går galt er at selv om der står noget i id ( arkiv.asp?id=9 ) så kører den ikke det der står i "else"

else
set rs2 = connect.execute("SELECT * FROM tnyheder WHERE [id] = " & request("id") & "")
set rs = connect.execute("SELECT * FROM tnyheder ORDER BY dato DESC")

Hvorfor gør den ikke det ?

Hvis jeg flytter rs2 ned under sidste end if så virker det med parameter på id MEN ikke uden ???
Avatar billede tmceu Praktikant
02. marts 2002 - 12:29 #15
Din else gælder kun for den 2. if. Ud fra din sidste kommentar, lyder det som om du mangler en else efter din 1. 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