Condividi tramite

QUERY PER AGGIUNGERE IL CAMPO ID (CHIAVE PRIMARIA) E INSERIRE I DATI DI ALTRA TABELLA

Anonimo
2017-12-13T12:03:01+00:00

Ciao a tutti,

mi rivolgo a voi poichè, nonostante i numerosi tentativi e le ricerche sul web, non sono riuscito a risolvere il problema che avevo sottoposto alla vostra attenzione qualche tempo fa.

Ho una tabella esterna collegata (es. Tabella 1) al mio data base contenente dei dati e vorrei, con una specifica istruzione sql/query, che quest'ultima mi creasse una tabella nel mio database (es. Tabella 2) con gli stessi campi della tabella collegata (tabella1) con l'aggiunta di una chiave ID primaria, leggesse i dati presenti nella tabella 1, ordinarli per un determinato campo e li copiasse nella tabella 2 appena creata.

Personalmente ho provato con le istruzioni sql INSERT INTO, ma sono riuscito a duplicare solo i dati della tabella senza riuscire ad ordinare i dati prima di copiarli nella nuova tabella e, soprattutto, creare il campo chiave primaria ID.

Questo l'esempio di dati della tabella 1:

Questo il risultato che vorrei ottenere:

Ciao e grazie in anticipo

Luca

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2017-12-13T16:10:41+00:00

Ciao Luca,

con qualche riga di codice VBA dovresti risolvere il problema:


Sub DuplicaTabellaCollegata()

    Dim sSQL As String

    With CurrentDb

        sSQL = "SELECT '' AS ID, Anagrafica.* INTO Anagrafica_NEW FROM Anagrafica WHERE 1=2"

        .Execute sSQL

        Application.RefreshDatabaseWindow

        sSQL = "Alter Table Anagrafica_NEW Alter Column ID COUNTER PRIMARY KEY"

        .Execute sSQL

        sSQL = "INSERT INTO Anagrafica_NEW (Cognome, Nome, DataNascita, Indirizzo) " _

                    & "SELECT Cognome, Nome, DataNascita, Indirizzo FROM Anagrafica " _

                    & "Order by Cognome, Nome, DataNascita"

        .Execute sSQL

    End With

End Sub


David

La risposta è stata utile?

3 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2017-12-14T11:27:47+00:00

Questo il codice modificato:


Sub DuplicaTabellaCollegata()

    Dim sSQL As String

    Dim t As TableDef

    Const sCopyTable As String = "Anagrafica_NEW"

    Const sSourceTable As String = "Anagrafica"

    With CurrentDb

        On Error Resume Next

        Set t = .TableDefs(sCopyTable)

        If Not t Is Nothing Then

            .TableDefs.Delete Name:=sCopyTable

            Application.RefreshDatabaseWindow

        End If

        On Error GoTo 0

        sSQL = "SELECT '' AS ID, " & sSourceTable & ".* INTO " & sCopyTable & " FROM " _

                    & sSourceTable & " WHERE 1=2"

        .Execute sSQL

        Application.RefreshDatabaseWindow

        sSQL = "Alter Table " & sCopyTable & " Alter Column ID COUNTER PRIMARY KEY"

        .Execute sSQL

        sSQL = "INSERT INTO " & sCopyTable & " (Cognome, Nome, DataNascita, Indirizzo) " _

                    & "SELECT Cognome, Nome, DataNascita, Indirizzo FROM " & sSourceTable & " " _

                    & "Order by Cognome, Nome, DataNascita"

        .Execute sSQL

    End With

End Sub


David

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

6 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2017-12-13T16:52:00+00:00

    Infatti David

    è quello che ho fatto mentre tu mi davi risposta.

    Comunque con il codice che hai postato il mio problema sembra risolto. Almeno per il momento.

    Ciao

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-12-13T16:40:07+00:00

    Corretto,

    potresti ad esempio creare una maschera con un pulsante di "clonazione tabella" e nell'evento click del pulsante inserisci le righe di codice che sono comprese tra  

    Sub DuplicaTabellaCollegata()

    End Sub

    David

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-12-13T16:34:59+00:00

    Ciao David,

    ma il codice che hai postato dove lo inserisco? Non certo nella progettazione di una query. Giusto?

    Grazie

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento