Newsgroup: it.comp.lang.visual-basic
Titolo: Come impostare una query di ricerca

Salve a tutti
Premetto che vengo da Access e vorrei sostituirlo con visual basic.
Nel tentativo faccio qualche prova.
In Access ho due tabelle una clienti ed una fattura che sono relazionate
tramite idcliente con relazione uno a molti.
    clienti            fattura
    idcliente        n. fatt
    nominativo    idcliente
    indirizzo        data
Una volta che ho creato una query tra queste due tabelle, se io inserisco
l'idcliente nella query, questa mi ricerca i dati anagrafici del cliente e
me li inserisce nella query. Di seguito in forma tabellare:
    query
    fattura.[n fatt]
    fattura.data
    fattura.idcliente
    clienti.nominativo
    clienti.indirizzo
Ho provato a ricreare la stessa cosa con visual basic. Ho effettuato un link
ad un db Access e sfruttando il dataenvironment, ho creato il command
("SELECT fattura.[n fatt], fattura.data, fattura.idcliente,
clienti.nominativo,clienti.indirizzo
FROM clienti INNER JOIN fattura ON clienti.idcliente=fattura.idcliente") che
relaziona le due tabelle esattamente come in Access ed ho creato il form con
i campi del command.
Ora (e scusate l'ignoranza), perchè se nel campo idcliente inserisco
l'identificativo non mi ricerca i dati anagrafici di quel cliente?
Vi ringrazio
Ciao
Fabio

 l'identificativo non mi ricerca i dati anagrafici di quel cliente?
Ho simulato su miei archivi e con questa:
SELECT fattura.[n fatt], fattura.data, fattura.idcliente,
clienti.nominativo,clienti.indirizzo
FROM clienti INNER JOIN fattura ON clienti.idcliente=fattura.idcliente
mi restituisce tutte le fatture con tutti i dati dei clienti relativi.
Con questa:
SELECT fattura.[n fatt], fattura.data, fattura.idcliente,
clienti.nominativo,clienti.indirizzo
FROM clienti INNER JOIN fattura ON clienti.idcliente=fattura.idcliente
WHERE clienti.idcliente=123
mi restituisce tutte le fatture con tutti i dati del cliente con ID 123.
Con questa:
SELECT fattura.[n fatt], fattura.data, fattura.idcliente,
clienti.nominativo,clienti.indirizzo
FROM clienti LEFT JOIN fattura ON clienti.idcliente=fattura.idcliente
mi restituisce tutti clienti (anche quelli senza fatture) e le fatture
presenti
Con questa:
SELECT fattura.[n fatt], fattura.data, fattura.idcliente,
clienti.nominativo,clienti.indirizzo
FROM clienti RIGHT JOIN fattura ON clienti.idcliente=fattura.idcliente
mi restituisce tutti clienti con fatture e le fatture relative.
In ogni caso i dati anagrafici dei clienti sono sempre riportati.

 ha scritto nel messaggio
news:9FIS8.77148$j65.1...@twister1.libero.it...

scusami ma non sono stato completo nella mia spiegazione:
ho un form dove ad ogni campo del recordset ho associato una text, quindi
anche al campo idcliente. Io vorreri ottenere che, quando inserisco un
idcliente, nei campi successivi e cioè nominativo ed indirizzo, mi venga
riportato il corrispettivo nominativo ed indirizzo quando premo invio. Ho
pensato di fare un requery all'uscita del campo idcliente, ma mi da un
errore. Non riesco a venir fuori da questo problema e purtroppo non riesco a
capire dove individuarlo.
Se c'è qualcosa che non è chiaro, sono qui per spiearmi meglio.
Grazie
Fabio

 capire dove individuarlo.
Ipotizzando che tu sappia già come aprire il database e aprire sullo stesso
dei recordset:
Nell'evento (per esempio) LostFocus del text_id:
Poni in un recordset (supponiamo rs) il risultato di questa query:
Select clienti.nome, clienti.indirizzo from clienti where
clienti.idcliente=val(text_id)
text_nome.text=rs!nome
text_indirizzo=rs!indirizzo


Pensavo ci fosse qualcosa di diverso da impostare. Credevo che tutto si
sviluppasse come in access.
Comunque grazie e scusami per le difficoltą che posso averti creato
nell'ambito del ng.
Ciao
Fabio