Newsgroup: it.comp.lang.visual-basic
Titolo: Form di ricerca... la mia soluzione :)

Oi!
Sicuramente sarà una soluzione poco efficiente, però penso che per me
è la più semplice da realizzare.
Allora, a seconda del campo di ricerca (c'è la possibilità di
scegliere campi su diverse tabelle, e non tutti i record hanno dati su
tutte le tabelle) creo un recordset con i record che soddisfano la
ricerca solo su quella tabella.
Dopodichè risalgo, a partire dalla chiave primaria di quella tabella,
ai corrispondenti record sulle altre tabelle collegate.
Tuttavia in questo modo dovrei creare un recordset per ogni tabella,
poichè altrimenti l'inner join (che non sono riuscito a modificare)
non mi seleziona i record che non hanno valori su tutte le tabelle. 
E' un pò macchinoso, mi rendo conto, ma non sono riuscito a trovare
soluzioni alternative :\ 
Ora ci starebbe bene un suggerimento illuminante :D
Grazie mille e
Axè!

Ora ci starebbe bene un suggerimento illuminante :D
Illuminante non so, pero' il segreto sta nel disegnare bene la base
dati e costruire le stringhe sql correttamente, tutte cose che si
imparano studiando ed accumulando esperienza.
Purtroppo non ti so suggerire dei buoni libri sulla progettazione dei
database, ma se fai un salto in una buona libreria troverai
sicuramente qualche libro utile.
Se non vuoi/puoi spendere, una visita alla biblioteca della tua citta'
potrebbe rivelarsi fruttuosa.
-- 
ciao, hal

poi, un bel giorno, inventarono SQL :-)
Il problema č proprio quello :D
Ho costruito una stringa SQL che mi selezioni in un unico recordset
tutti i record, il problema č che se costruisco la query con un OUTER
JOIN (che č quello che mi serve poichč non tutti i record hanno valori
in tutte le tabelle) il parser di VB mi dice che c'č errore nella
stringa SQL. Allora sostituendo tutto con gli inner join ovviamente
spesso mi esce recordset vuoto. Perciň sono tornato alla clava :D
Per quanto riguarda l'esperienza lo so, perciň sto cercando di farne
il piů possibile e so che per ora le mie soluzioni non potranno essere
eleganti o economiche o anche corrette, e quindi cerco di chiedere sul
NG il piů possibile, cercando di confrontare con le mie rozze
soluzioni :)
Grazie mille e...
Axč!

 spesso mi esce recordset vuoto. Perciò sono tornato alla clava :D
Per quanto mi ricordo, l'OUTER JOIN (che ogni dialetto SQL la chiama
diversamente, prova solo con OUTER) riporta solo i record che *non* sono
correlati.
La INNER *solo* che hanno correlazione.
La LEFT *tutti* i record della prima tabella + quelli delle tabelle
correlate che abbiano o no una corrispondenza.
Quindi solitamente vorrai usare la LEFT e non la OUTER.
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

Quindi solitamente vorrai usare la LEFT e non la OUTER.
Si. la sintassi č LEFT OUTER. E vorrei fare una cosa come :
SELECT NomeContraente, Numeropolizza FROM ( tblContraente LEFT OUTER
JOIN tblPolizza ON tblcontraente.ID_Contraente =
tblPolizza.ID_Contraente) WHERE tblcontraente.ID_Contraente =
Parametro
Dovrebbe fungere, anche se devo ancora provarla :D vi faccio sapere :)
Axč!

 Dovrebbe fungere, anche se devo ancora provarla :D vi faccio sapere :)
prova con LEFT _senza_ OUTER ...
ciao
ugo

 prova con LEFT _senza_ OUTER ...
E' quello che stavo cercando di dire: quello che vuole fare dovrebbe essere
una LEFT JOIN e non una OUTER.
Cosě come l'ha scritta lui tira fuori tutti i contraenti senza polizza, il
che č una contraddizione.
Ciao.
