Avatar billede mkjeldsen Nybegynder
16. februar 2001 - 11:03 Der er 12 kommentarer og
2 løsninger

Fejl i SQL

Hvor er fejlen i denne sætning
---
Set Rs = Connect.Execute (\"SELECT Modul.*, Produkter.*, Priser.* FROM (Modul INNER JOIN Produkter ON Modul.ModulID = Produkter.ModulID) INNER JOIN Priser ON Produkter.ProduktID = Priser.ProduktID WHERE (((Modul.ModulID)=\'\" & modulid & \"\')) AND Where (((Priser.Prisgruppe)=\'\"1\"\'))\" ) 
---
Jeg får følgende fejl:
---
Set Rs = Connect.Execute (\"SELECT Modul.*, Produkter.*, Priser.* FROM (Modul INNER JOIN Produkter ON Modul.ModulID = Produkter.ModulID) INNER JOIN Priser ON Produkter.ProduktID = Priser.ProduktID WHERE (((Modul.ModulID)=\'\" & modulid & \"\')) AND Where (((Priser.Prisgruppe)=\'\"1\"\'))\" ) 
---
Mogens
Avatar billede sone Nybegynder
16. februar 2001 - 11:05 #1
Fejl ??
Avatar billede slash Nybegynder
16. februar 2001 - 11:05 #2
kan man skrive select modul.*? skal man ikke eksplicit definere de rows man vil tilgå? altså select modul.modulID
Avatar billede eagleeye Praktikant
16. februar 2001 - 11:09 #3
modulid er det et tal for så:
Ret denne:
(Modul.ModulID)=\'\" & modulid & \"\'))
Til:
(Modul.ModulID)=\" & modulid & \"))
Avatar billede mkjeldsen Nybegynder
16. februar 2001 - 11:09 #4
slash<<
Ja man kan godt skrive Select modul.*, i stedet for at skrive sætningen fuldt ud. Siten \"fanger\" alive alle felterne i tabellen.
Avatar billede eagleeye Praktikant
16. februar 2001 - 11:11 #5
OG hvis Priser.Prisgruppe er et tal? så
Ret denne:
(Priser.Prisgruppe)=\'\"1\'))\"
Til:
(Priser.Prisgruppe)=1))\"
Avatar billede mkjeldsen Nybegynder
16. februar 2001 - 11:11 #6
eagleeye<< Nej ModulID er et tekstfelt. Problemet er, at jeg gerne vil have 2 \"Where\" sætninger i samme SQL-streng. Jeg skal bruge både MudulID og Prisgruppe=1
Avatar billede mkjeldsen Nybegynder
16. februar 2001 - 11:14 #7
eagleeye<<  Hvis jeg ændrer til (Priser.Prisgruppe)=1))\" - får jeg denne fejl:
---
Microsoft OLE DB Provider for ODBC Drivers fejl \'80040e14\'

[Microsoft][ODBC Microsoft Access-driver] Der er en ikke-defineret funktion \"Where\" i udtrykket.

/Asp/ItemNyWeb/webshop/main1.asp, linje 21
Avatar billede eagleeye Praktikant
16. februar 2001 - 11:20 #8
Hvis Priser.Prisgruppe er defineret som tekst i databasen så skal der \'\' omkring 1.

WHERE Priser.Prisgruppe=1\")

Prøv at slette AND før WHERE:
AND Where (((Priser.Prisgruppe)=\'\"1\"\'))\" ) 
TIL:
Where Priser.Prisgruppe=1\")
Avatar billede eagleeye Praktikant
16. februar 2001 - 11:22 #9
undskyld mit svar lige før men det er forkert... dette HER

Prøv at slette WHERE efter  AND:
AND Where (((Priser.Prisgruppe)=\'\"1\"\'))\" ) 
TIL:
AND Priser.Prisgruppe=1\")
Avatar billede eagleeye Praktikant
16. februar 2001 - 11:23 #10
Altså slet det sidte WHERE
Avatar billede mkjeldsen Nybegynder
16. februar 2001 - 11:28 #11
Jeg har nu gjort dette:
---
Set Rs = Connect.Execute (\"SELECT Modul.*, Produkter.*, Priser.* FROM (Modul INNER JOIN Produkter ON Modul.ModulID = Produkter.ModulID) INNER JOIN Priser ON Produkter.ProduktID = Priser.ProduktID WHERE (((Modul.ModulID)=\'\" & modulid & \"\' And Priser.Prisgruppe=1)) \") 
---
OG DET VIRKER....

Avatar billede mkjeldsen Nybegynder
16. februar 2001 - 11:30 #12
eagleeye<<
Tak for hjælpen - Jeg kalkulerer med at din hjælp var 50%, så du får 30 point - er det OK

Mogens
Avatar billede mkjeldsen Nybegynder
16. februar 2001 - 11:41 #13
Mig selv
Avatar billede eagleeye Praktikant
16. februar 2001 - 11:56 #14
Fint med mig.
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