Newsgroup: it.comp.lang.visual-basic
Titolo: [vb.net] Join e Datagrid...è possibile?

Scusate ragazzi, è un po' che ci provo e guardo in giro, ma non ci riesco...
Perchè da quello che ho visto/letto mi sorgono dei dubbi sulla fattibilità e 
allora chiedo prima a voi...
E' possibile usare il join nella datagrid o no?
Facciamo un esempio : ho due tabelle (tblComuni e tblProvincie), relazionate 
tra loro.
Ora vorrei che nella mia datagrid (popolata via data adapter con una query 
"SELECT tblcomuni.comune, tblprovincia.provincia FROM tblprovincia INNER 
JOIN tblcomuni ON 
tblprovincia.id
 = tblcomuni.idprovincia;" ) al posto dell' 
Id relativo alla provincia mi venga visualizzata la sigla della provincia 
stessa....classico esempio della lookuptable.
Da me non funge, nel senso che mi sbaglia gli accoppiamenti....
Qualche dritta???
Umbe 

 Da me non funge, nel senso che mi sbaglia gli accoppiamenti....
Dovrebbe andare, invece. Se visualizzi la query direttamente sul database,
cosa succede?
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
Se i tempi non chiedono la tua parte migliore, inventa altri tempi. 
(Baolian, libro II, vv. 16-17)
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 cosa succede?
Sul Db funziona perfettamente..ti diro' di più..l'ho fatta con access e l'ho 
copiata pari pari sul data adapter...e mi sbaglia gli accoppiamenti...ho 
notato che accoppia automaticamente le due chiavi primarie (che hanno lo 
stesso nome: id) anzichè chiave primaria con chiave esterna...
Umbe 

 ha scritto nel messaggio 
news:M7Fpf.92013$65.26...@twister1.libero.it...


 
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q319076
Diciamo che non mi interessa la combo....voglio solo visualizzare i dati, 
non poterli scegliere.
Quindi con 
ado.net
 se ho una tabella fornitori e memorizzo l'id della 
provincia(di un altra tabella), in un datagrid non riesco a visualizzare la 
sigla della provincia ma solo l' idprovincia?
Confermi allora quello che avevo letto? e cioč che il join col datagrid non 
č possibile?
Umbe 

 
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q319076
Mi sono scordato...
grazie per il link, che avevo già peroò letto per 
vb.net
.
La procedura là descritta è pero' un po' un pastroccio...parte dei campi 
sono in sola lettura, mentre altri si possono modificare....(rif. kb319082)
:-(
Umbe 

 è possibile?
Boh...
Non riesco a capire. Credo di aver fatto una cosa del genere dozzine di
volte.
Quando tu estrai dal database un recordset basato su una query, tu
visualizzi nel datagrid quel recordset. Che sia stato originato facendo
uso di un join o no non cambia assolutamente nulla.


 uso di un join o no non cambia assolutamente nulla.
Prova a fare cosě, ci metti 30 secondi netti:
Da access ti fai due tabelle cosě composte:
tabella fornitori:
id (chiaveprimaria e contatore)
Nome (testo)
IdProvincia (numerico, funge da chiave esterna)
tabella provincie
id (chiave primaria)
Sigla (testo)
Quindi le relazioni (tra le due chiavi)
Riempi con un po' di dati le due tabelle
a questo punto con 
vb.net
 ti crei l'oledbdataadapter usando o il query 
builder o scrivi direttamente la sql (SELECT tblfornitori.nome, 
tblprovincie.sigla FROM (tblfornitori INNER JOIN tblprovincie ON 
tblfornitori.id
 = 
tblprovincie.id
).
Riempi il data adapter col metodo fill e caccia tutto sulla datagrid.
I campi non combaciano!
La stessa query su access invece funziona perfettamente.
Umbe

 
tblfornitori.id
 = 
tblprovincie.id
).
Spero sia solo un esempio, perchè quel Join lì a me fa paura...
Alberto
-- 
A questo punto hanno trovato un muro,
un muro duro, molto molto duro,
che siamo noi.

 
tblfornitori.id
 = 
tblprovincie.id
).
Umbe...
Nel tuo primo post, la query era la seguente:
"SELECT tblcomuni.comune, tblprovincia.provincia FROM tblprovincia INNER 
JOIN tblcomuni ON 
tblprovincia.id
 = tblcomuni.idprovincia;" 
Sicuro che l'errore non sia lě?
Per il resto, non ho qui macchine con il net montato, non posso aiutarti.


 Spero sia solo un esempio, perchè quel Join lì a me fa paura...
L'ha creato in automatico il querybuilder e volontariamente io ho omesso le 
chiavi, sennò la stringa diventava lunga. La cosa cmq. non funziona manco se 
le metti le chiavi.
Umbe 

 Per il resto, non ho qui macchine con il net montato, non posso aiutarti.
grazie lo stesso!
Umbe 

 reale, ma le relazioni sono identiche.
Allora ricominciamo da capo...
dal tuo post:
tabella fornitori:
id (chiaveprimaria e contatore)
Nome (testo)
IdProvincia (numerico, funge da chiave esterna)
tabella provincie
id (chiave primaria)
Sigla (testo)
Sei sicuro che la query da te proposta, che riporto per completezza:
SELECT tblfornitori.nome, 
tblprovincie.sigla FROM (tblfornitori INNER JOIN tblprovincie ON 
tblfornitori.id
 = 
tblprovincie.id
risponda alle tue esigenze?
Non sarebbe più corretta una cosa del tipo:
SELECT tblfornitori.nome, 
tblprovincie.sigla FROM (tblfornitori INNER JOIN tblprovincie ON 
tblfornitori.idProvincia = 
tblprovincie.id
)
?


 ha scritto nel messaggio 
news:I0Spf.10061$eD5.1...@twister2.libero.it...
[CUT]
Ho capito! e chiedo scusa.
Se le due tabelle hanno il nome delle chiavi uguali, le associa 
automaticamente, sbagliando quindi il join. Non avevo controllato la 
relazione, avendola creata su access pensavo di averla definita li' e che 
quella riportata in automatico sul querybuilder fosse corretta.
Troppe automazioni pero' ...mi tocca controllare pure quelle...
Grazie a tutti cmq.!
Umbe 


Grazie Sergio...ho appena risposto sotto...il fatto è che la query è stata 
creata automaticamente ed io non l'ho controllata. Il query builder 
automaticamente ti crea il join sbagliando.
Umbe 

Umbe ci ha detto :

Non ci credo.
Se tu fai un copiaincolla DIRETTO fra la finestrella Sql di Access e il 
codice Vb.Net, non puoi ottenere cose diverse.
Non per niente, le query vanno sempre sviluppate nelle finestrelle Sql, 
testate, e copiaincollate solo quando sono pronte.
Secondo me serve un qualcosa tipo IdProvincia nella tbl fornitori.
Altrimenti leghi il fornitore 3 alla provincia 3, non alla provincia 
corretta.
Ciao


 Troppe automazioni pero' 
Diffidare delle automazioni.
Sempre :-)


 Sempre :-)
E da chi le usa!
Me in questo caso...   :-(
Umbe