Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [VB6] Collegare le tabelle

    In access ho creato le mie due tabelle, collegate tra loro mediante ID

    Ho due tabelle

    Clienti
    Schede dettagli

    In pratica un record CLIENTI corrisponde a più record SCHEDE DETTAGLI

    In access ho aperto una delle due tabelle e risultato collegate, infatte compare il simbolo "+" a sinistra

    Ora in VB6, come si realizza la join tra le due tabelle, in modo che scrivendo su SCHEDE DETTAGGLI da solo si aggancia al record della tabella CLIENTI????

    Ciao e grazieeeeeeee

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quando scrivi nella tabella DETTAGLI devi gia' possedere l'ID del cliente ...

    Devi fare

    1) Selezione cliente (da una lista, da una griglia ...)
    2) Ricerca dell'ID a partire dal nominativo in CLIENTI
    3) Scrittura in DETTAGLI utilizzando l'ID del cliente trovato

  3. #3

    Si

    Si si, primo creo il cliente

    Poi una volta creato entro al suo intenro e voglio inserire i record nella seconda tabella collegata

    Non ho proprio la minima idea di come collegare le due tabelle

    Questa è la prima tabella

    Set rsRecordSet = New ADODB.Recordset
    rsRecordSet.Open "SELECT [ID],[Cognome],[Nome],[DataNascita],[Indirizzo],[Ecc] From [Cliente] order by [Cognome]", Cn, adOpenStatic, adLockOptimistic


    Questa è la seconda tabella

    Set rsRecordSet2 = New ADODB.Recordset
    rsRecordSet2.Open "SELECT [ID],[Macchina],[Gruppo],[Ecc]From [Schede dettagli] order by [Macchina]", Cn, adOpenStatic, adLockOptimistic


    Cosi ho due recordset distinti

    Come faccio a far si che siano collegati.

    Io ho utilizzato un metodo "barbaro" ma funzionanate.
    Ossia quando ho finito di scrivere i dati, nel momento che chiudo la form, eseguo una query di aggiornamento, cioè prendo il valore di ID della prima tabella e lo copio nei record che ho appena creato nella seconda tabella.
    In questo modo i record della seconda tabella hanno l'ID di riferimento della prima, quindi risultato collegati.

    Io volevo un metodo più serio, so che esiste la JOIN, ma non l'ho mai utilizzata

    Mi potete creare la sintassi di collegamento???

    Ciao e grazieeeeeee

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    NON ESISTE una sintassi di collegamento.

    Le due tabelle si dicono "collegate" quando presentano ambedue un campo che permette di risalire ad un record della prima a partire dalla seconda.

    Nella tabella SchedaDettaglio hai un campo del tipo

    IDCliente

    ?

  5. #5

    Si

    Si si ho quel campo

    Infatti come ti dicevo li collego con quel metodo

    Cioè in chiusura copio l'ID della prima tabella (tabella padre), a tutti i nuovi record che ho creato nella casella IDCliente (tabella figli) cosi facendo ho il riferimento di tale ID, quindi il metodo che sto utilizzando è buono????

    Ciao e grazieeeeeeee

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sì ... e' l'unico metodo che esiste in fase di inserimento dei dati.

    Per riepilogare tu avrai

    tabella CLIENTI
    campi IDCliente, Nominativo, Indirizzo ...

    tabella SCHEDADETTAGLIO
    campi IDScheda, IDCliente, NumeroScheda, ...

    Quando inserirai una riga di dettaglio nella seconda tabella, metterai nel campo IDCliente di tale tabella il valore del campo IDCliente della prima tabella a cui vuoi fare riferimento.

    Fatto questo in fase di ricerca e selezione dei dati, solo allora, userai la JOIN nella SELECT per estrarre in un unico recordset le righe di dettaglio e i dati dei clienti cosi' collegati.

  7. #7

    Ok

    Anche in fase di ricerca ho fatto due recordset

    Ho una datagrid con tutti i nominati, quando clicco su un nome faccio aprire una nuova form, e qui mi esegue due query

    Ricerca i dati del cliente tramite IDcliente preso dalla datagrid e i dati del DETTAGLIO utilizzando sempre lo stesso Id senza che utilizzo la JOIN, in pratica la JOIN la faccio io manulmente con due recordset

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No ... per la ricerca devi ottenere un solo recordset tramite una JOIN, altrimenti i campi collegati non hanno senso ...

    Usa una frase SQL simile

    SELECT CLIENTI.*, SCHEDADETTAGLI.*
    FROM CLIENTI INNER JOIN SCHEDADETTAGLI
    ON CLIENTI.IDCliente = SCHEDADETTAGLI.IDCliente
    WHERE CLIENTI.IDCliente=1

    che restituisce in un solo recordset i dati del cliente con ID=1 e tutte le sue schede dettaglio collegate

  9. #9

    Ok

    Ok provo e ti faccio sapere


    Ciao e grazieeee

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.