Newsgroup: it.comp.lang.visual-basic
Titolo: Due query in un datagrid

Ciao a tutti,
vengo subito al punto ....
Dovrei tirare fuori dal mio database access tutti i dati relativi a dei 
movimenti.
Faccio due select una per tirarmi fuori i movimenti che non hanno 
l'idfattura e l'altra quando l'idfattura c'è.
(Perchè nella tabella movimenti, che si collega alla tabella fattura, si può 
verifiare il caso in cui idfattura è vuoto )
Questi risultati li metto in due datagrid ....
Vorrei poterle mettere in una sola ... cioè unire queste due query
Si può fare????? 

 Vorrei poterle mettere in una sola ... cioč unire queste due query
Fai una sola query.
Una cosa del genere
Select ID_Fattura=Coalesce(b.id_fattura,'---'),
    a.ID_Movimento
From TB_Movimenti as A
Left outer join TB_Fatture as B
On A.Id_Fattura=B.Id_Fattura
Devi adattarla per il dialetto Sql Access, che credo non supporti '=' nel 
campo estratto (prova AS), e credo non supporti il Coalesce (prova Isnull).
Ciao
Alberto
-- 
E tutto mi sembrava andasse bene... 

> Vorrei poterle mettere in una sola ... cioè unire queste due query


 " & CInt(s(0)), cn, 1
Mi sembra abbastanza scontato che queste cose debbano essere fatte in una 
finestra sql di Access, e non certamente scrivendo delle stringhe 
concatenate in VB.
Non mi metto neppure a sfrugugliare in mezzo a quel poccio che hai postato.


> che è la seguente


 Mi consigliate un'altra soluzione??
Almeno due:
1.
formatta umanamente il codice che pubblichi, sia esso
basic, sql o altro;
2.
rispondi *sotto* al testo a cui ti riferisci e non sopra;
piu` in generale, cerca su google qualcosa che spieghi
cosa sia il quoting, come funziona e perche`.
-- 
ciao, hal

 Mi consigliate un'altra soluzione??
Il tuo problema è prenderti tutti i record di movimenti (con o senza ID
fattura) e solo quelli di fattura dove questa è presente?
In tal caso invece di una INNER JOIN prova una LEFT OUTER JOIN o RIGHT OUTER
JOIN, che prende tutti i record della prima o seconda tabella (a seconda di
quale usi), e i record dell'altra correlata.
Fai qualche prova comunque.

 Mi consigliate un'altra soluzione??
Non capisco la tua domanda.
Ti ho solamente detto che devi postare il codice Sql come lo vedi nella 
finestra Sql del tuo client, Access nel tuo caso, e non con quella orrida ed 
illeggibile concatenazione di stringhe di VB.
Quando scrivi una query, che non sia una semplice select *, ovviamente la 
sviluppi nella finestra Sql del client, e poi, quando funziona, la 
copi-incolli in vb aggiungendo gli apici e sostituendo i parametri con le 
concatenazioni.
Per cui, non vedo perchè tu debba postare la versione vb, su cui sicuramente 
è una perdita di tempo mettersi a lavorare. Un po' come se a fronte di un 
problema, uno postasse il compilato anzichè il sorgente.


 parametri con le concatenazioni.
Ehm io scrivo tutto a mano sempre e comunque :), non ti dico che divertente
se non funge alla prima :).
Purtroppo con db interbase l'unica cosa che puoi fare è incollare l'sql del
codice e vedere dove da errore nell'interfaccia usata, che non è appunto
come quella di access.
In ogni caso sottoscrivo quello che dici :D.


Non conosco Interbase e neppure gli strumenti di accesso ad esso.
Ma se non esiste proprio niente, puoi comunque farti tu un banale client.
Una label, un datagrid in basso e un textbox multiline in alto.
Un bottoncino "Play", che faccia una cosa del tipo:
On Error goto Errore
Rs.Source=replace$(textbox1.text, vbnewline, " ")
Rs.Open
Set DataGrid1.DataSource=Rs
Label1.Caption="Esecuzione Completata"
Exit sub
Errore:
Label1.Caption=cstr(Err.number) & " " & err.description
Per sviluppare, un tool che consenta di testare la parte sql è 
indispensabile.


 indispensabile.
Una finestra dove mettere l'sql c'è nell'IBOConsole, solo che non è user
friendly come quella di Access :)


Beh, se mi parli del Query Analyzer di Sql-Server, è uno strumento molto 
bello, con le sue funzioncine che ti creano alcuni script in un secondo.
Ma quella di Access, proprio, è tristissima.
E' un grande textbox con un tastino 'play', e oltretutto è sfigata perchè 
dopo l'esecuzione commuta la visualizzazione sui risultati, per cui perdi 
tempo per tornare a visualizzare il codice Sql.
Se ti riferisci invece alla schermata qbe (e non sql), cioè quella dove 
lavori col drag&drop, credo che sia la cosa meno professionale che abbia mai 
visto.
Per quanto la finestra Sql dell'IBOConsole possa essere triste, non credo 
possa essere triste come quella di Access.
