Avatar billede krisbjoern Nybegynder
25. september 2001 - 00:22 Der er 10 kommentarer og
1 løsning

Hvad for en operator...

Jeg får denne fejlmelding i mit script, hvor alt andet ellers virker:

Microsoft OLE DB Provider for ODBC Drivers fejl \'80040e14\'
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket \"Udgivelses Aar = 2000\".

/skole/opg4/index.asp, linje 68

Her er min kode
Den øverste stump virker fint det er den linie hvor jeg med \"where\" forsøger at udskrive titler med \"Udgivelses Aar = 2000\" der går i ged:

Set Rs = Server.CreateObject(\"ADODB.Connection\")
Rs.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.MapPath(\"boeger.mdb\")
sql = \"SELECT * FROM bogtabel\"
Set objRec = Rs.Execute(sql)

response.write \"<b>\" & \"udskriver fra tabel med wilcard:\" & \"</b>\"
response.write \"<br>\"
do while not objRec.eof
response.write objrec(\"titel\") & \"<br>\"
objrec.movenext
loop


Response.Write \"<B> udskriver med where og order forspørgelse og logiske operatorer. I dette tilfælde = :</B><BR>\"
sql = \"SELECT * FROM bogtabel where Udgivelses Aar = 2000 order by ID\"    \'Den her sætning*******
Set objRec = Rs.Execute(sql)
do while not objRec.eof
response.write objrec(\"Udgivelses Aar\") &\"<br>\"
objrec.movenext
loop
Avatar billede bjarke-b Nybegynder
25. september 2001 - 00:27 #1
Prøv og ændre

sql = \"SELECT * FROM bogtabel where Udgivelses Aar = 2000 order by ID\"

til

sql = \"SELECT * FROM bogtabel where Udgivelses Aar = \'2000\' order by ID\"

Det kommer an på hvilken datatype du har sat dit felt til at være.
Avatar billede krisbjoern Nybegynder
25. september 2001 - 00:32 #2
Samme fejlmelding.
Jeg har i database oprettet kolonnen som egenskaben TAL

Går det nogen forskel?
Avatar billede keysersoze Ekspert
25. september 2001 - 00:37 #3
fejlen kunne meget vel være, at der ikke må være mellemrum i et kolonnenavn - altså er \"Udgivelses Aar\" ugyldigt...
Avatar billede krisbjoern Nybegynder
25. september 2001 - 00:44 #4
JA!
Men som sagt virker resten af mit script. Det er kun når jeg vil begrænse min udskrivning til \"titler\" der er udgivet i år 2000.
Altså når jeg længere oppe i scriptet bruger denne kode:

\'Her udskrives HELE indholdet i databasen til en tabel
do while not RS.eof
Response.Write \"<TR>\"
Response.Write \"<TD>\" & RS(\"ISBN\") & \"</TD>\"
Response.Write \"<TD>\" & RS(\"Titel\") & \"</TD>\"
Response.Write \"<TD>\" & RS(\"Forfatter\") & \"</TD>\"
Response.Write \"<TD>\" & RS(\"Udgivelses Aar\") & \"</TD>\"
Response.Write \"<TD>\" & RS(\"Lokal\") & \"</TD>\"
Response.Write \"</TR>\"
RS.movenext
loop

Går det fint...

Så det er altså IKKE dér problemet ligger!?!
Avatar billede keysersoze Ekspert
25. september 2001 - 00:50 #5
prøv lige engang med:

sql = \"SELECT * FROM bogtabel where Udgivelses Aar = \"2000\" order by ID\"
Avatar billede krisbjoern Nybegynder
25. september 2001 - 00:54 #6
Virker heller ikke
strengen brydes og ved at kæde den sammen igen med & giver det nøjagtig samme resultat.

(sql = \"SELECT * FROM bogtabel where Udgivelses Aar = \" & 2000 & \" order by ID\")


jeg har også prøvet:

sql = \"SELECT * FROM bogtabel where Udgivelses Aar = \'2000\' order by ID\"

Og det virker heller ikke.

Da jeg prøvede
sql = \"SELECT * FROM bogtabel where \'Udgivelses Aar = 2000\' order by ID\"

Skrev den bare hele indholdet ug igen!?!?!
Avatar billede keysersoze Ekspert
25. september 2001 - 00:57 #7
ok - det var også en fejl jeg forventede som resultat...

jeg er stadig ret overbevist om at der er fordi kolonnen er i to ord... når du udskriver det er det i en parentes, så derfor kan den godt se hvad den skal finde...

men prøv engang med:

sql = \"SELECT * FROM bogtabel where (Udgivelses Aar) = \'2000\' order by ID\"

Avatar billede krisbjoern Nybegynder
25. september 2001 - 01:06 #8
Nej - Virker heller ikke.
Jeg tror du har ret i det med at sql\'en ikke kan forstå når et kolonne navn er todelt.

Da jeg forsøgte(samme sted i scriptet) at udskrive lokalt forefindende titler var der intet problem jeg erstattede bare Udgivelses Aar med Lokal og 2000 med True.
No problemo...

Så vi stopper legen mens den er go\' og keysersoze får pointene...

Venligst
Kristian Bjørn
Avatar billede keysersoze Ekspert
25. september 2001 - 01:16 #9
ok :)

men det _burde_ være muligt... kan bare ikke lige huske hvordan :/
Avatar billede krisbjoern Nybegynder
25. september 2001 - 01:26 #10
Man kan jo for h...... bare lade være med at gøre tingene så inviklede for sig selv.

f.eks kalde kolonnen for UdgivelsesAar eller Udgivelses_Aar.

Hvorfor gør jeg så ikke bare det?
Fordi jeg har lavet database på skolen hvor vi bruger Access 2000 og jeg bruger Access 97 herhjemme... så jeg kan ikke åbne min database hjemme - godt træk MS!
Avatar billede keysersoze Ekspert
25. september 2001 - 01:45 #11
som sagt mener jeg altså det kan lade sig gøre - prøv dette:

sql = \"SELECT * FROM bogtabel where [Udgivelses Aar] = \'2000\' order by ID\"
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