Avatar billede futuregrafix Nybegynder
13. april 2005 - 11:01 Der er 33 kommentarer og
1 løsning

søge i flere databaser

Hvordan får jeg noget bygget ind i min kode herunder, der gør at den søger i mere end tabellen ved 6? Hvordan laver man så den også søger i eks. 2, 3, 5, osv. ?

'Opbygger en dynamisk SQL streng
strSQL = "SELECT * FROM 6 WHERE"
strSQL = strSQL & " (VareNr LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Tekst LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Pris LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Beskrivelse LIKE '%" & strKeyword & "%')"

På forhånd mange tak!!

Mvh
Mark
Avatar billede busschou Praktikant
13. april 2005 - 11:02 #1
Avatar billede busschou Praktikant
13. april 2005 - 11:05 #2
Hedder felterne i tabellerne det samme? og skal du bare have alt ud? eller skal det sammenlignes på tværs tabellerne imellem?
Avatar billede futuregrafix Nybegynder
13. april 2005 - 11:07 #3
jeg har bare en database ved navn database.mdb og der hedder taballerne i den numre, som, 2, 3, 5, og 6 osv. Ved godt det er en join forbindelse, men kan ikke finde ud af det :)
Avatar billede futuregrafix Nybegynder
13. april 2005 - 11:08 #4
og ja kolonner hedder det samme, som VareNr, Tkest, Pris og Beskrivelse
Avatar billede busschou Praktikant
13. april 2005 - 11:14 #5
måske kan du bruge union når alle felter er ens og af samme type
http://www.w3schools.com/sql/sql_union.asp
altså:
-------
strSQL = "SELECT * FROM 6 WHERE"
strSQL = strSQL & " (VareNr LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Tekst LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Pris LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Beskrivelse LIKE '%" & strKeyword & "%')"
-------
strSQL1 = "SELECT * FROM 5 WHERE"
strSQL1 = strSQL1 & " (VareNr LIKE '%" & strKeyword & "%')"
strSQL1 = strSQL1 & " OR (Tekst LIKE '%" & strKeyword & "%')"
strSQL1 = strSQL1 & " OR (Pris LIKE '%" & strKeyword & "%')"
strSQL1 = strSQL1 & " OR (Beskrivelse LIKE '%" & strKeyword & "%')"
-------
osv
Bliver til
nySql = strSQL UNION strSQL1
Avatar billede busschou Praktikant
13. april 2005 - 11:15 #6
er i tvivl..men prøv evt det her først:
strSQL = "SELECT * FROM 6,5,4,3,2,1 WHERE"
strSQL = strSQL & " (VareNr LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Tekst LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Pris LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Beskrivelse LIKE '%" & strKeyword & "%')"
Avatar billede futuregrafix Nybegynder
13. april 2005 - 11:21 #7
hmm det lyder fint, men får bare følgende fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.

/sog/search.asp, line 155


Efter jeg har skrevet den her kode:
strSQL = "SELECT * FROM 5 WHERE"
strSQL = strSQL1 & " (VareNr LIKE '%" & strKeyword & "%')"
strSQL = strSQL1 & " OR (Tekst LIKE '%" & strKeyword & "%')"
strSQL = strSQL1 & " OR (Pris LIKE '%" & strKeyword & "%')"
strSQL = strSQL1 & " OR (Beskrivelse LIKE '%" & strKeyword & "%')"

strSQL1 = "SELECT * FROM 6 WHERE"
strSQL1 = strSQL & " (VareNr LIKE '%" & strKeyword & "%')"
strSQL1 = strSQL & " OR (Tekst LIKE '%" & strKeyword & "%')"
strSQL1 = strSQL & " OR (Pris LIKE '%" & strKeyword & "%')"
strSQL1 = strSQL & " OR (Beskrivelse LIKE '%" & strKeyword & "%')"
Avatar billede futuregrafix Nybegynder
13. april 2005 - 11:22 #8
aghhh 2 sek, har set det :)
Avatar billede busschou Praktikant
13. april 2005 - 11:23 #9
hehe :o)
Avatar billede futuregrafix Nybegynder
13. april 2005 - 11:25 #10
hmm nu får jeg:
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/sog/search.asp, line 155

og minde kode ser ens ud:
strSQL = "SELECT * FROM 3 WHERE"
strSQL = strSQL & " (VareNr LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Tekst LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Pris LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Beskrivelse LIKE '%" & strKeyword & "%')"
                                                            strSQL1 = "SELECT * FROM 6 WHERE"
strSQL1 = strSQL1 & " (VareNr LIKE '%" & strKeyword & "%')"
strSQL1 = strSQL1 & " OR (Tekst LIKE '%" & strKeyword & "%')"
strSQL1 = strSQL1 & " OR (Pris LIKE '%" & strKeyword & "%')"
strSQL1 = strSQL1 & " OR (Beskrivelse LIKE '%" & strKeyword & "%')"


Hvordan kan det være busschou ?
Avatar billede busschou Praktikant
13. april 2005 - 11:28 #11
syntaksen for en union som vælger alt er
----
SQL Statement 1
UNION ALL
SQL Statement 2
----
Avatar billede futuregrafix Nybegynder
13. april 2005 - 11:29 #12
ja det kan jeg se på w3schools, men den skal jo ikke vælge alt, kun VareNr, Tekst, Pris og Beskrivelse?????
Avatar billede busschou Praktikant
13. april 2005 - 11:31 #13
Når du siger - SELECT * - Så vælger du jo alle felter i tabellerne hvor betingelserne er opfyldt...incl evt ID nummer
Avatar billede futuregrafix Nybegynder
13. april 2005 - 11:35 #14
oky, så er det ændret, nu hedder koden sig sådan herunder, men får stadig den fejl herover:

'Opbygger en dynamisk SQL streng
strSQL = "SELECT VareNr,Tekst,Pris,Beskrivelse FROM 3 WHERE"
strSQL = strSQL & " (VareNr LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Tekst LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Pris LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Beskrivelse LIKE '%" & strKeyword & "%')"

strSQL1 = "SELECT VareNr,Tekst,Pris,Beskrivelse FROM 6 WHERE"
strSQL1 = strSQL1 & " (VareNr LIKE '%" & strKeyword & "%')"
strSQL1 = strSQL1 & " OR (Tekst LIKE '%" & strKeyword & "%')"
strSQL1 = strSQL1 & " OR (Pris LIKE '%" & strKeyword & "%')"
strSQL1 = strSQL1 & " OR (Beskrivelse LIKE '%" & strKeyword & "%')"

Hvor kommer UNION ind i koden? :) Forstår det ikke helt :)
Avatar billede busschou Praktikant
13. april 2005 - 11:38 #15
strSQL = "SELECT VareNr,Tekst,Pris,Beskrivelse FROM 3 WHERE"
strSQL = strSQL & " (VareNr LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Tekst LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Pris LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Beskrivelse LIKE '%" & strKeyword & "%')"

strSQL1 = "SELECT VareNr,Tekst,Pris,Beskrivelse FROM 6 WHERE"
strSQL1 = strSQL1 & " (VareNr LIKE '%" & strKeyword & "%')"
strSQL1 = strSQL1 & " OR (Tekst LIKE '%" & strKeyword & "%')"
strSQL1 = strSQL1 & " OR (Pris LIKE '%" & strKeyword & "%')"
strSQL1 = strSQL1 & " OR (Beskrivelse LIKE '%" & strKeyword & "%')"

total = strSQL UNION strSQL1
conn.execute(total)
Avatar billede futuregrafix Nybegynder
13. april 2005 - 11:38 #16
skal der ikke ændres noget her?????


'Skaber et recordset udfra SQL strengen
Set rs = myConn.Execute(strSQL)
Avatar billede futuregrafix Nybegynder
13. april 2005 - 11:38 #17
aghhh ;)
Avatar billede busschou Praktikant
13. april 2005 - 11:41 #18
jeg kender ikke mere til det end jeg kan se på w3schools
Så jeg ved desværre ikke umiddelbart hvad der sker hvis nogle felter er ens
I deres eksempel henter de jo kun eet felt ud og skriver at hvis der er ens kommer det kun med een gang
Men hvad der sker når du hiver fire felter ud må vi så se - med mindre en anden kommer og siger det.
Ved ikke om de alle fire skal være ens eller om de skal være ens hver for sig
Hvis det giver problemer kan du så benytte union all så tager den det hele
Avatar billede futuregrafix Nybegynder
13. april 2005 - 11:42 #19
tror den er liiige ved at være der :) Bøffer jeg stadig godt i det?

'Opbygger en dynamisk SQL streng
strSQL = "SELECT VareNr,Tekst,Pris,Beskrivelse FROM 3 WHERE"
strSQL = strSQL & " (VareNr LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Tekst LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Pris LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Beskrivelse LIKE '%" & strKeyword & "%')"

strSQL1 = "SELECT VareNr,Tekst,Pris,Beskrivelse FROM 6 WHERE"
strSQL1 = strSQL1 & " (VareNr LIKE '%" & strKeyword & "%')"
strSQL1 = strSQL1 & " OR (Tekst LIKE '%" & strKeyword & "%')"
strSQL1 = strSQL1 & " OR (Pris LIKE '%" & strKeyword & "%')"
strSQL1 = strSQL1 & " OR (Beskrivelse LIKE '%" & strKeyword & "%')"

'Skaber DSNLess forbindelse til DBen
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../../db/database.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

'Skaber et recordset udfra SQL strengen
Set rs = myConn.Execute(strSQL UNION strSQL1)
Avatar billede busschou Praktikant
13. april 2005 - 11:47 #20
Jeg ved ikke om du kan execute den direkte sådan eller om du skal lave en
SQL = strSQL & " UNION " & strSQL1
og så
Set rs = myConn.Execute(SQL)
Avatar billede futuregrafix Nybegynder
13. april 2005 - 11:52 #21
aghhhhhhh lorte kode :)

får:
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/sog/search.asp, line 156

og i line 156 er det:
'Skaber et recordset udfra SQL strengen
SQL = strSQL & " UNION " & strSQL1
Set rs = myConn.Execute(SQL)

Så der går et eller andet galt i den sidste del....
Avatar billede busschou Praktikant
13. april 2005 - 11:54 #22
prøv evt lige at udskrive din sql
altså:
---
SQL = strSQL & " UNION " & strSQL1
response.write(SQL)
Set rs = myConn.Execute(SQL)
Avatar billede busschou Praktikant
13. april 2005 - 11:54 #23
Kan jo være at den forsøger at sammenligne med noget som ikke eksisterer
Avatar billede futuregrafix Nybegynder
13. april 2005 - 11:55 #24
så går den kold, tjek lige det her:

SELECT VareNr,Tekst,Pris,Beskrivelse FROM 3 WHERE (VareNr LIKE '%2227%') OR (Tekst LIKE '%2227%') OR (Pris LIKE '%2227%') OR (Beskrivelse LIKE '%2227%') UNION SELECT VareNr,Tekst,Pris,Beskrivelse FROM 6 WHERE (VareNr LIKE '%2227%') OR (Tekst LIKE '%2227%') OR (Pris LIKE '%2227%') OR (Beskrivelse LIKE '%2227%')
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/sog/search.asp, line 157
Avatar billede busschou Praktikant
13. april 2005 - 11:59 #25
hmm øhh bøhh
prøv med
SQL = "(" & strSQL & ") UNION (" & strSQL1 & ")"
Avatar billede futuregrafix Nybegynder
13. april 2005 - 12:00 #26
det sker det samme, jeg forstår det ikke lige....

(SELECT VareNr,Tekst,Pris,Beskrivelse FROM 3 WHERE (VareNr LIKE '%2227%') OR (Tekst LIKE '%2227%') OR (Pris LIKE '%2227%') OR (Beskrivelse LIKE '%2227%')) UNION (SELECT VareNr,Tekst,Pris,Beskrivelse FROM 6 WHERE (VareNr LIKE '%2227%') OR (Tekst LIKE '%2227%') OR (Pris LIKE '%2227%') OR (Beskrivelse LIKE '%2227%'))
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/sog/search.asp, line 157
Avatar billede busschou Praktikant
13. april 2005 - 12:03 #27
din orginale virkede fint nok ikke? altså når der kun var en tabel
Avatar billede busschou Praktikant
13. april 2005 - 12:08 #28
ifølge microsoft så siger de:
--
This error occurs only with Microsoft Access when one of the column names specified in a select statement does not exist in the table being queried.
--
Avatar billede futuregrafix Nybegynder
13. april 2005 - 12:22 #29
jo den originale virker helt fint. jeg løber lige kolonnerne igennem!
Avatar billede busschou Praktikant
13. april 2005 - 12:29 #30
Så vidt jeg ved kommer den fejl enten når man har givet et felt et forkert navn eller når man sammenligner med noget forkert
Fx hvis man sammenligner et felt som er et tal med en streng
Jeg er i tvivl om
VareNr LIKE '%2227%'
skal være
VareNr LIKE %2227%
Normalt skal der jo ikke plinger om tal
Avatar billede futuregrafix Nybegynder
13. april 2005 - 12:30 #31
så virker det sq!!! ;) Mange mange tak
Avatar billede busschou Praktikant
13. april 2005 - 12:30 #32
oki kanon...:o) .. hvad var fejlen så?
Avatar billede futuregrafix Nybegynder
13. april 2005 - 12:32 #33
det var en latterlig fejl!! Ved ikke om det er godt og skrive det her :) ej oki, jeg den kolonne der SKULLE hedde pris, hen den i nogen af dem, men i den tabel heddder 3 vejl_pris - så var de ikke ens... Men det lære man jo af :D

Mange tak
Avatar billede futuregrafix Nybegynder
13. april 2005 - 12:34 #34
okay godt stavet der alligevel... nå men du forstår det sikkert godt :)
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