webForumDet fria alternativet

SyntaxFel...

13 svar · 276 visningar · startad av alj

aljMedlem sedan sep. 2002538 inlägg
#1
Dim SQLLinks, Links, SQLKategorier, Kategorier

            SQLKategorier = "SELECT * FROM tblKategori"
            Set Kategorier = Connect.Execute(SQLKategorier)

                       Do Until Kategorier.EOF

                             SQLLinks = "SELECT * FROM tblLankar WHERE Visas = True AND Kategori = " & Kategorier("KategoriId")
                             Set Links = Connect.Execute(SQLLinks)
                                   Response.write Kategorier("KategoriNamn")
                                   Response.write "<br>"

                            Do Until Links.EOF

                               Response.write "<a href=""" & Links("Adress") & """ alt=""" & Links("Beskrivning") & """>"
                               Response.write Links("Namn")
                               Response.write "</a>"
                               Response.write "<br>"

                            Loop
                      Loop

Felet jag får är:

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

[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket 'Visas = True AND Kategori ='.

/design/links.asp, rad 20

Och rad 20 är:
Set Links = Connect.Execute(SQLLinks)

kan inte komma på vad som är fel, antagligen något riktigt simpelt men i alla fall, hjälp!

Ps. Kan inte någon svara på min andra tråd :P

jboy_87Medlem sedan aug. 20011 099 inlägg
#2

Det ser ut som Kategori inte får nått värde!

CoreXMedlem sedan sep. 2001105 inlägg
#3

prova skriva 1 istället för true

aljMedlem sedan sep. 2002538 inlägg
#4

Det där med "1" fungerade inte men tack endå :),
och vad menar du med att kategori inte får något värde?!

LarsGMedlem sedan dec. 200012 464 inlägg
#5

Koda inte så där. Du kommer att belasta databasen väldigt mycket i onödan.

Dim SQLLinks, Links, KategoriNamn

SQLLinks = ""SELECT * FROM tblLankar tl inner join tblKategori tk " & _
" on tl.kategoriid = tk.kategori " & _
" WHERE tl.Visas = True " & _
" order by tk.kategori "
Set Links = Connect.Execute(SQLLinks)
kategoriNamn = ""
Do Until links.EOF
     if kategoriNamn <> Links("KategoriNamn") then
            kategoriNamn = Links("KategoriNamn")
            Response.write KategoriNamn
            Response.write "<br>"
     end if
     Response.write "<a href=""" & Links("Adress") & """ alt=""" & Links("Beskrivning") & """>"
     Response.write Links("Namn")
     Response.write "</a>"
     Response.write "<br>"
     Links.movenext
Loop
aljMedlem sedan sep. 2002538 inlägg
#6

LarsG skrev:

Koda inte så där. Du kommer att belasta databasen väldigt mycket i onödan.

Dim SQLLinks, Links, KategoriNamn

SQLLinks = ""SELECT * FROM tblLankar tl inner join tblKategori tk " & _
" on tl.kategoriid = tk.kategori " & _
" WHERE tl.Visas = True " & _
" order by tk.kategori "
Set Links = Connect.Execute(SQLLinks)
kategoriNamn = ""
Do Until links.EOF
     if kategoriNamn <> Links("KategoriNamn") then
            kategoriNamn = Links("KategoriNamn")
            Response.write KategoriNamn
            Response.write "<br>"
     end if
     Response.write "<a href=""" & Links("Adress") & """ alt=""" & Links("Beskrivning") & """>"
     Response.write Links("Namn")
     Response.write "</a>"
     Response.write "<br>"
     Links.movenext
Loop

!? Det där förstår jag inte ett dugg utav, vad har du gjort :q

OveRRidEMedlem sedan feb. 200112 078 inlägg
#7

Det LarsG har gjort är att skapa en (INNER) JOIN mellan tabellerna tblLankar och tblKategori.

Kort förklararat; en jämförelse som kollar ifall det finns några rader i tabelln 'tblLankar' där 'kategoriid' är samma värde som några rader i tabell 'tblKategori', i kolumnen 'kategori'. Om det finns några träffar, läggs dessa till på raden i recordset:et. :)

aljMedlem sedan sep. 2002538 inlägg
#8

Med Lars G kod får jag följande felmeddelande:

Microsoft OLE DB Provider for ODBC Drivers fel '80040e10'

[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 2 förväntades.

/design/links.asp, rad 18

Och rad arton är
Set Links = Connect.Execute(SQLLinks)
Hjälp!
:x

LarsGMedlem sedan dec. 200012 464 inlägg
#9
SQLLinks = ""SELECT * FROM tblLankar tl inner join tblKategori tk " & _
" on tk.kategoriid = tl.kategori " & _
" WHERE tl.Visas = True " & _
" order by tk.kategori "

Jag har bytt plats på tk och tl.

aljMedlem sedan sep. 2002538 inlägg
#10

Får nu felet :
Microsoft OLE DB Provider for ODBC Drivers fel '80040e10'

[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.

/design/links.asp, rad 18

:( Men tack för eran starka hjälp :)

EkströmMedlem sedan feb. 20022 594 inlägg
#11

Prova plocka bort ett ". DVS.

SQLLinks = "SELECT * FROM tblLankar tl inner join tblKategori tk " & _
" on tk.kategoriid = tl.kategori " & _
" WHERE tl.Visas = True " & _
" order by tk.kategori "
LarsGMedlem sedan dec. 200012 464 inlägg
#12

Det fel som du får beror på att det är något kolumnnamn som inte stämmer med dina tabelldefinitioner.

aljMedlem sedan sep. 2002538 inlägg
#13

Wohooo! Tusen tack Lars G!
Du är bara bäst :)
Jaja, nu när allt fungerar så vill jag absolut veta mera om "inner join" i sql eller vad det är, några bra länktips?

OveRRidEMedlem sedan feb. 200112 078 inlägg
#14

https://www.sqlfaq.com

137 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)