Avatar billede mekaniker Nybegynder
08. maj 2003 - 10:21 Der er 6 kommentarer og
1 løsning

Select med innerselect og søgning.

Jeg har en tabel over ordre, hvori der også figurere et kunde_id.

Jeg er igang med at lave en søgefunktion til denne. Det skulle gerne være sådan at jeg kunne søge på ordrenr. og kunde navn.

Jeg har forsøgt med følgende, men uden held.

ordresearch = request.form("ordre")

SQL = "SELECT * FROM ordre WHERE Kunde_id IN (SELECT id, fornavn, efternavn FROM kunde WHERE fornavn LIKE '%" & replace(ordresearch, "'", "''") & "%' OR efternavn LIKE '%" & replace(ordresearch, "'", "''") & "%') AND Afsluttet='yes' OR ordrenr=" & ordresearch

Jeg får følgende fejl:

Microsoft JET Database Engine (0x80004005)
Du har skrevet en underforespørgsel, der kan returnere mere end ét felt uden at bruge det reserverede ord EXISTS i hovedforespørgslens FROM-delsætning. Ret SELECT-sætningen i underforespørgslen, så den kun kræver et felt.
Avatar billede dk_akj Nybegynder
08. maj 2003 - 10:26 #1
SQL = "SELECT * FROM ordre WHERE Kunde_id IN (SELECT id FROM kunde WHERE fornavn LIKE '%" & replace(ordresearch, "'", "''") & "%' OR efternavn LIKE '%" & replace(ordresearch, "'", "''") & "%') AND Afsluttet='yes' OR ordrenr=" & ordresearch

din innerselect returnerede 3 felter.

//akj
Avatar billede mekaniker Nybegynder
08. maj 2003 - 10:37 #2
Så for jeg denne fejl

Der er ikke angivet nogen værdi for en eller flere krævede parametre.
Avatar billede dk_akj Nybegynder
08. maj 2003 - 10:38 #3
SQL = "SELECT * FROM ordre WHERE Kunde_id IN (SELECT id FROM kunde WHERE fornavn LIKE '%" & replace(ordresearch, "'", "''") & "%' OR efternavn LIKE '%" & replace(ordresearch, "'", "''") & "%') AND Afsluttet='yes' OR ordrenr=" & ordresearch
response.write "sql = " & sql
response.end

Hvad står der i sql'en ??

//akj
Avatar billede mekaniker Nybegynder
08. maj 2003 - 10:42 #4
Det er lidt mærkeligt.
Den virker hvis jeg skriver et tal, men hvis jeg f.eks. skiver "kurt" i søgefeltet får jeg ovenstående fejl.

Response.write SQL, giver denne.

SELECT * FROM ordre WHERE Kunde_id IN (SELECT id FROM kunde WHERE fornavn LIKE '%1520%' OR efternavn LIKE '%1520%') AND Afsluttet='yes' OR ordrenr=1520
Avatar billede dk_akj Nybegynder
08. maj 2003 - 10:48 #5
Med tal:

SELECT * FROM ordre WHERE Kunde_id IN (SELECT id FROM kunde WHERE fornavn LIKE '%1520%' OR efternavn LIKE '%1520%') AND Afsluttet='yes' OR ordrenr=1520

Med "Kurt":
SELECT * FROM ordre WHERE Kunde_id IN (SELECT id FROM kunde WHERE fornavn LIKE '%Kurt%' OR efternavn LIKE '%Kurt%') AND Afsluttet='yes' OR ordrenr=Kurt

Har du et ordrenummer der hedder 'Kurt' ??

//akj
Avatar billede mekaniker Nybegynder
08. maj 2003 - 10:51 #6
Nej det har jeg selvfølgelig ikke.

Og jeg har selv lige set den.

Tak for hjælpen, nogle gange stirre man sig bare blind på tingene.
Avatar billede dk_akj Nybegynder
08. maj 2003 - 10:52 #7
Selvtak.

//akj
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