Copia del campo ID tra tabelle

di il
26 risposte

Copia del campo ID tra tabelle

Buongiorno a tutti,

chiedo aiuto per 1 domanda apparentemente semplice:

ho 2 semplici tabelle la relazione esistente è del tipo 1 a molti

vorrei semplicemente copiare il numero ID relativo alla Tab 1 nel campo relativo associato della Tab 2 senza dovrerlo inserire manualmente.

è possibile passando da una query di aggiornamento effettuare questa copia? oppure l'unico modo per gestire è tramite una maschera + relativa casella combinata?

Ringrazio in anticipo chiunque avesse suggerimenti

26 Risposte

  • Re: Copia del campo ID tra tabelle

    In base all'uso pratico che ne devi fare (questo lo sai solo tu) puoi pensare una di queste ipotesi:
    A) Maschera/sottomaschera che poggiano rispettivamente su Tabella1 e Tabella2.
    B) Maschera che poggia su Tabella2 là dove il campo IDTab1 è una casella combinata.
  • Re: Copia del campo ID tra tabelle

    Grazie per le informazioni, un ultima domanda se posso passare da una query invece è possibile? Sconsigliato?
  • Re: Copia del campo ID tra tabelle

    Non credo ti serva una query. Se tu esplicitassi i nomi veri delle tabelle, del campo ID, saprei consigliarti la via più adeguata.
  • Re: Copia del campo ID tra tabelle

    OsvaldoLaviosa ha scritto:


    Non credo ti serva una query.
    Ma con la maschera non gli tocca aggiornare un record alla volta? Con una query, se riesce ad impostare la WHERE, fa fare tutto ad Access... Almeno, io su Sql Server uso direttamente le query di UPDATE.
  • Re: Copia del campo ID tra tabelle

    Si il mio obiettivo sarebbe di evitare la compilazione tramite maschera, preferirei passare dalla query e autonomamente far gestire ad access il collegamento ma non so come intervenire.
    Se necessario posso allegare il database
  • Re: Copia del campo ID tra tabelle

    Allora studia .
    Hai due possibilità:
    1) Giochi con la WHERE
    UPDATE Tabella
    SET Campo = "Nuovo valore"
    WHERE AltroCampo = "qualchecosa"
    2) Usi la funzione Switch
    UPDATE Tabella
    SET Campo = SWITCH(espr-1, valore-1 [, espr-2, valore-2 ] ... [, espr-n, valore-n ])
    Ovviamente nulla vieta di combinare i due metodi assieme. Dipende quali sono i criteri di aggiornamento...
    Fa sempre un backup prima!!
  • Re: Copia del campo ID tra tabelle

    Campo tabella A

    ID_A Codice articolo Descrizione articolo Materia_Prima Cliente Data reg




    campo tabella B

    ID_B Materiale Descrizione materiale Fornitore ID_A


    in sostanza vorrei una query che copiasse/collegasse il n° ID_A ---> nel campo ID_B
  • Re: Copia del campo ID tra tabelle

    ornello ha scritto:


    in sostanza vorrei una query che copiasse/collegasse il n° ID_A ---> nel campo ID_B
    Questa cosa non è molto chiara... Prova tu a scrivere la query, poi si vede di correggerla.

    Nota a margine: Spero vivamente che quelli che hai riportato non siano realmente i nomi dei campi delle tue tabelle. Gli spazi sono sempre una pessima idea (basti pensare che serve un certo impegno a capirli già solo così...)
  • Re: Copia del campo ID tra tabelle

    UPDATE (tabella b)
    SET (Id b) = (tabella a).(id a)
    WHERE (Id a) = VALORE REGISTRATO NELLA TABELLA A

    Tralasciando la sintassi, dopo aver letto i link pensavo a questa soluzione.
    ma cosa dovrei mettere nella clausola where
    essendo il termine (Id a) un contatore chiave primaria della tabella a.

    Tradotto in pratica spiccia:
    (Id b) dovrebbe prendere il valore assegnato automaticamente da access al contatore (Id a) presente nella tabella a. Spero di aver chiarito

    WHERE (Id a) = VALORE REGISTRATO NELLA TABELLA A??

    Il codice SQL va poi inserito nella sezione query oppure nella sezione tabella?
  • Re: Copia del campo ID tra tabelle

    ornello ha scritto:


    in sostanza vorrei una query che copiasse/collegasse il n° ID_A ---> nel campo ID_B
    Questo concetto è errato. Forse volevi dire "nel campo Tabella2.ID_A"

    ornello ha scritto:


    Campo tabella A

    ID_A Codice articolo Descrizione articolo Materia_Prima Cliente Data reg

    campo tabella B

    ID_B Materiale Descrizione materiale Fornitore ID_A
    Quello che avrei da ridire io è che non si possono nominare le tabelle TabellaA e TabellaB. Cosa rappresentano queste tabelle? I nomi tabelle devono essere coerenti con il loro contenuto. Quindi si parla di Fornitori, Articoli, Ordini...
    Tanti altri ragionamenti, figli della logica della normalizzazione, vanno di conseguenza.
    Secondo me c'è un errore di progettazione che impedisce a ornello di ragionare in maniera corretta...confondendo le idee ai programmatori abituati a vedere i dati in maniera normalizzata.
  • Re: Copia del campo ID tra tabelle

    Questo concetto è errato. Forse volevi dire "nel campo Tabella2.ID_A"
    riprendo e confermo quello che hai scritto.

    Tabella 2.ID A è il campo di destinazione finale in cui vorrei copiare il valore di ID proveniente dalla tabella 1.

    per quanto riguarda i nomi delle tabelle sono semplicemente un esempio moltooooo sintetico che rappresentano quello che vorrei ottenere nella pratica.
    Le tabelle sono più complesse, volevo ridurre al massimo il concetto di lavoro che mi serve...
  • Re: Copia del campo ID tra tabelle

    Forse Sgrubak ha compreso meglio di me il da farsi.
    Per me, potresti raccontare con un esempio concreto quello che vorresti fare? Perchè non ho capito se devi scrivere record uno alla volta (quindi è giusto l'input manuale) oppure un aggiornamento (o accodamento) massivo...

    Tuttavia nutro ancora dubbi sulla normalizzazione di "quelle" tabelle!
  • Re: Copia del campo ID tra tabelle

    ornello ha scritto:


    (Id b) dovrebbe prendere il valore assegnato automaticamente da access al contatore (Id a) presente nella tabella a.
    Come ti ha già fatto notare Osvaldo, questa cosa non ha senso... Quello che vuoi aggiornare è: [TabellaB].[ID_A] = [TabellaA].[ID_A]. Questa cosa di non badare alla sintassi, finirà per darti più grattacapi che altro.

    Ora, quali che siano i vincoli per capire quali record aggiornare lo sai tu. Devi sapere quale dei campi della TabellaB ([ID_B], [Materiale], [Descrizione materiale], [Fornitore], [ID_A]) ti "impone" un certo [ID_A].

    Per passare il valore da una tabella ad un'altra, avrai bisogno di una query tipo:
    UPDATE TabellaB, TabellaA
    SET [TabellaB].[CampoB] = [TabellaA].[CampoA]
    WHERE <condizione>;
  • Re: Copia del campo ID tra tabelle

    Ciao riprendo l'argomento,
    cercando la soluzione al problema ho trovato questa istruzione che permette di aggiornare la tabella creata nella query :

    **** UPDATE tabellaB INNER JOIN tabellaA ON tabellaB.[ID A] = TabellaA.[ID A] SET TabellaB.[ID A] = [TabellaA].[ID A];

    chiedo un opinione a riguardo di sgrubak se può rispondere....

    L'istruzione aggiorna la tabella query che vado a creare, la tabella di origine invece non viene aggiornata.

    Chiedo e' corretto il procedimento?

    Grazie in anticipo
Devi accedere o registrarti per scrivere nel forum
26 risposte