Avatar billede jeffe Nybegynder
26. august 2003 - 00:40 Der er 12 kommentarer og
1 løsning

MySQL-sætning EOF

Jeg får EOF på den her sætning:

sql = "SELECT * FROM spms LEFT JOIN svar ON spms.spmid = svar.spmid WHERE spmid = '" & request.querystring("spmid") & "' AND spms.spmid = svar.spmid AND svar.brugerid <> '" & session("brugerid") & "'"

jeg har selvfølgelig tjekket tonsvis af gange at:
1. spms-tabellen har feltet spmid
2. svar-tabellen har felterne spmid og brugerid
3. querystring spmid er sat til 1 (eller andet hvor der findes en record)
4. session brugerid er reel nok

Hvad kan der været galt så? Det er altså meningen at trække alt fra spms-tabellen hvor
1. id (spmid) = querystring
2. brugeren ikke har en record i svar-tabellen. Dvs en record med spmid = 1 og brugerid = 1 når querystring = 1 og session brugerid = 1
Avatar billede jakobandersen Nybegynder
26. august 2003 - 00:44 #1
Prøv at udskriv SQL strengen før du sender den til databasen så udelukker du din ASP-kode som en fejlfaktor først, se evt.: http://www.asp-faq.dk/article/?id=41
Avatar billede jeffe Nybegynder
26. august 2003 - 00:49 #2
Jammen, det er den jo som ovenover ?
Avatar billede jeffe Nybegynder
26. august 2003 - 00:51 #3
Men altså, grunden til at jeg forklarede at jeg havde tjekket det så mange gange osv. var at jeg er overbevist om at jeg bare har meget at lære om SQL endnu. Jeg tror jeg har lavet sætningen lidt forkert nemlig. Hvis ASP-koden var fejlbåren, ville den jo brokke sig og ikke bare melde om rs.eof eller rs.bof.
Avatar billede jakobandersen Nybegynder
26. august 2003 - 01:04 #4
Jo hvis f.eks. Request.Querystring("spmid") er ingenting, så vil SQL'en muligvis fejle du har stadig ASP blandet i din SQL, prøv lige efter liniern med:

sql = ".....

at skrive:

Response.Write(sql)
Response.End

og post resultatet her.
Avatar billede jeffe Nybegynder
26. august 2003 - 01:04 #5
ok, øjeblik...og undskyld
Avatar billede jeffe Nybegynder
26. august 2003 - 01:06 #6
Som det er lige nu, for jeg en [TCX][MyODBC]Column: 'spmid' in where clause is ambiguous
ved linjen med rs.open
Avatar billede jeffe Nybegynder
26. august 2003 - 01:07 #7
SELECT * FROM spms LEFT JOIN svar ON spms.spmid = svar.spmid WHERE spmid = '1' AND spms.spmid = svar.spmid AND svar.brugerid <> '1'

Sådan er den...
Avatar billede jeffe Nybegynder
26. august 2003 - 01:11 #8
Glem det. Jeg har fundet fejlen.
Jeg havde glemt spms. foran den ene spmid.
Pinligt.
Du får point for at give mig den lektion i fejlfinding. Mange tak for din tid !
Avatar billede jakobandersen Nybegynder
26. august 2003 - 01:17 #9
Det ser i din SQL sætning ud som om at du behandler heltal som strenge(ved at sætte dem i '). Dette er ikke en god ide, Hvis datatypen kun skal indeholde heltal så lav den om til en INT/LONGINT altafhængig af omfanget af dine talstørrelser.
Avatar billede jeffe Nybegynder
26. august 2003 - 01:33 #10
alle de id's der er, er af INT-typen
Avatar billede jakobandersen Nybegynder
26. august 2003 - 01:34 #11
Ok, så skal du ikke have ' uden om værdierne i din SQL sætning. Det undrer mig faktisk at mySQL ikke fejler med en typeclash eller lignende.
Avatar billede jeffe Nybegynder
26. august 2003 - 01:48 #12
nåh ok, takker...
Avatar billede jeffe Nybegynder
26. august 2003 - 01:48 #13
troede de bare havde noget at gøre med at det var variabler...
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
Computerworld tilbyder specialiserede kurser i database-management

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