webForumDet fria alternativet

dBase + SQLstrul

6 svar · 312 visningar · startad av OveRRidE

OveRRidEMedlem sedan feb. 20018 509 inlägg
#1

Jag försöker den denna SQL-sats hämta lite data ur ett antal databaser som är av formatet dBase:

SQL = "SELECT * FROM kund.dbf k INNER JOIN oof.dbf o ON k.kundnr = o.kundnr INNER JOIN artrad.dbf a ON o.doknr = a.doknr INNER JOIN art.dbf a2 ON a.artnr = a2.artnr WHERE a.benaemn LIKE '%" & srcString & "%'"

Minn connection ser ut sårhär:

conn.Open "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=U:\VB\search\db;"

Nån som vet varför jag får följande meddelande:?

Syntax error: missing operator

:l :q

LarsGMedlem sedan dec. 200012 465 inlägg
#2

dBase?

Du kan väl testa någon av dessa

SQL = "SELECT * FROM ((kund.dbf k 
INNER JOIN oof.dbf o ON k.kundnr = o.kundnr)
 INNER JOIN artrad.dbf a ON o.doknr = a.doknr)
 INNER JOIN art.dbf a2 ON a.artnr = a2.artnr 
WHERE a.benaemn LIKE '%" & srcString & "%'"

eller

sql = "select * from kund.dbf k,oof.dbf o ,arrad.dbf a,art.dbf a2" & _
" where oof.dbf o ON k.kundnr = o.kundnr " & _
" and o.doknr = a.doknr " & _
" and a.artnr = a2.artnr " & _
" and a.benaemn LIKE '%" & srcString & "%'"
OveRRidEMedlem sedan feb. 20018 509 inlägg
#3

Första satsen:

to many fields defined

Andra:

Syntax error: missing operator

Krångligt det här.. :l

OveRRidEMedlem sedan feb. 20018 509 inlägg
#4

Ny sträng, jag hade glömt att a.benaemn skulle vara a2.benaemn.. Men jag får samma fel, too many fields...

SQL = "SELECT * FROM ((kund.dbf k 
INNER JOIN oof.dbf o ON k.kundnr = o.kundnr)
 INNER JOIN artrad.dbf a ON o.doknr = a.doknr)
 INNER JOIN art.dbf a2 ON a.artnr = a2.artnr 
WHERE a2.benaemn LIKE '%" & srcString & "%'"
OveRRidEMedlem sedan feb. 20018 509 inlägg
#5

Eh.. förresten.. vad är det här? :q

[b]WHERE[/b] oof.dbf o [b]ON[/b] k.kundnr = o.kundnr

Jag tror din fråga var en aning felskriven... :) Jag testade denna, och då fick jag samma fel som ovan (To many fields defined). Det låter som nåt från dBase och inte som om det är nåt fel på SQL-satsen.. men vad? Skall jag ersätta * och spec:a varje kolumn?

sql = "select * from kund.dbf k, oof.dbf o, artrad.dbf a, art.dbf a2 where k.kundnr = o.kundnr and o.doknr = a.doknr and a.artnr = a2.artnr and a.benaemn LIKE '%" & srcString & "%'"
OveRRidEMedlem sedan feb. 20018 509 inlägg
#6

Många inlägg här nu. :e

Jag tror jag har fixat det:

sql = "select o.doknr, a2.benaemn, k.kundnr, k.namn, o.datum1 
from kund.dbf k, oof.dbf o, artrad.dbf a, art.dbf a2 
where k.kundnr = o.kundnr 
and o.doknr = a.doknr 
and a.artnr = a2.artnr 
and a2.benaemn 
LIKE '%" & srcString & "%'"
LarsGMedlem sedan dec. 200012 465 inlägg
#7

Jag missade en sak i mitt andra försök.

sql = "select * from kund.dbf k,oof.dbf o ,arrad.dbf a,art.dbf a2" & _
" where k.kundnr = o.kundnr " & _
" and o.doknr = a.doknr " & _
" and a.artnr = a2.artnr " & _
" and a.benaemn LIKE '%" & srcString & "%'"

red:
Lite sen, så går det när man glömmer att göra refresh.

Jo, felet med Too many fields låter som en begränsning i dbase.

Genererad på 371 ms · cache AV · v20260730165559-full.f96bc7eb