Creazione e aggiornamento tabella mediante query e/o codice VBA

Anonimo
2018-10-10T18:15:14+00:00

Ciao a tutti, sono sempre io a disturbare per chiedere il vostro aiuto per la risoluzione di qualche problema inerente il mio progetto dbase.

Il dbase per la programmazione di opere funziona correttamente (grazie all'aiuto di Vladimiro) ...ma da qualche giorno stò lavorando per ampliarlo e miglioralo. In particolare stò cercando di legare al mio dbase alcuni dati (tabelle) che ineriscono la gestione economica del progetto soprattutto per la gestione e rendicontazione della spesa di ogni singolo progetto.

Ho creato un collegamento ad una tabella esterna (residente in altro dbase) che chiamerò, per comodità TBL_IMP_MANDATO di cui allego immagine:

La tabella presenta molti dati (nell'immagine è solo un estratto molto, molto breve) di cui alcuni non interessano i progetti gestiti con il mio dbase e spesso alcuni record sono incompleti ma che a me invece interessano.

Con una maschera cerco di filtrare i dati mediante campi di ricerca attingendo alla tabella principale (vedi figura)

Fatta questa premessa, ciò che vorrei fare è questo:

  1. filtro i dati mediante la maschera e vengono restituiti i record che soddisfano il mio filtro;
  2. individuo i record che mi interessano (evidenziati in giallo dell'immagine)

  1. trasferire su una tabella residente nel mio dbase i record selezionati.

vorrei utilizzare una tabella separata e residente nel dbase (e non tabella collegata) poichè è possibile che io debba completare alcuni dati mancanti (nell'esempio il codice CIG) che non posso (e non voglio) modificare sulla tabella collegata.

La nuova tabella creata è relazionata con il mio dbase mediante il campo CUP.

  1. periodicamente dovrei aggiornare con nuovi dati la nuova tabella creata.

Ho provato con una query di creazione tabella, ma ogni volta che la eseguo mi vengono cancellati i dati già residenti e vengono sostituiti con i nuovi.

Ho provato anche con una query di accodamento e mi succede la stessa cosa.

Chi sarebbe così gentile da darmi una mano per risolvere e trovare la strada giusta per creare questa nuova tabelle ed aggiornarla periodicamente????

Grazie per la vostra collaborazione.

Ciao

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
2018-10-11T12:04:02+00:00

Ciao a tutti, sono sempre io a disturbare per chiedere il vostro aiuto per la risoluzione di qualche problema inerente il mio progetto dbase.

Il dbase per la programmazione di opere funziona correttamente (grazie all'aiuto di Vladimiro) ...ma da qualche giorno stò lavorando per ampliarlo e miglioralo. In particolare stò cercando di legare al mio dbase alcuni dati (tabelle) che ineriscono la gestione economica del progetto soprattutto per la gestione e rendicontazione della spesa di ogni singolo progetto.

Ho creato un collegamento ad una tabella esterna (residente in altro dbase) che chiamerò, per comodità TBL_IMP_MANDATO di cui allego immagine:

La tabella presenta molti dati (nell'immagine è solo un estratto molto, molto breve) di cui alcuni non interessano i progetti gestiti con il mio dbase e spesso alcuni record sono incompleti ma che a me invece interessano.

Con una maschera cerco di filtrare i dati mediante campi di ricerca attingendo alla tabella principale (vedi figura)

Fatta questa premessa, ciò che vorrei fare è questo:

  1. filtro i dati mediante la maschera e vengono restituiti i record che soddisfano il mio filtro;
  2. individuo i record che mi interessano (evidenziati in giallo dell'immagine)

  1. trasferire su una tabella residente nel mio dbase i record selezionati.

vorrei utilizzare una tabella separata e residente nel dbase (e non tabella collegata) poichè è possibile che io debba completare alcuni dati mancanti (nell'esempio il codice CIG) che non posso (e non voglio) modificare sulla tabella collegata.

La nuova tabella creata è relazionata con il mio dbase mediante il campo CUP.

  1. periodicamente dovrei aggiornare con nuovi dati la nuova tabella creata.

Ho provato con una query di creazione tabella, ma ogni volta che la eseguo mi vengono cancellati i dati già residenti e vengono sostituiti con i nuovi.

Ho provato anche con una query di accodamento e mi succede la stessa cosa.

Chi sarebbe così gentile da darmi una mano per risolvere e trovare la strada giusta per creare questa nuova tabelle ed aggiornarla periodicamente????

Grazie per la vostra collaborazione.

Ciao

Luca

Ciao Luca,

Potresti utilizzare un ciclo Do Loop.

In che modo però filtreresti i dati da trasferire in tabella?

Vladimiro

La risposta è stata utile?

2 persone hanno trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2018-10-13T18:42:07+00:00

Ciao Luca,

Ciao Vladimiro

intanto ti ringrazio per la soluzione che devo ancora provare. La prova la farò subito ma ho bisogno di avere qualche chiarimento in merito.

cit.

Questo numero identificativo l'ho chiamato "Cod" 

L'identificativo che tu hai chiamato Cod, in realtà deve essere un campo della tabella (TBL1) e deve essere uguale per ogni record; nel mio caso l'unico campo che è uguale per tutti i record filtrati è il campo CAPITOLO Nel codice da te postato devo sostituire Cod con Capitolo (giusto?)

Si, l'importante è che sia numerico altrimenti bisogna modificare il parametro nel codice.

cit.

L'origine record della maschera filtrata l'ho chiamata "Tbl1"

L'origine della mia SOTTOMASCHERA dovrà essere la tabella collegata al db esterno?

certo, l'origine record è il nome che ti compare nella sottomaschera, per cui al posto di "Tbl1" devi mettere il nome reale d'origine.

cit.

E la nuova tabella dove confluire i dati l'ho chiamata "Tbl2"In merito alla nuova tabella dove confluire i dati che posso chiamare a mio piacimento, devo crearla PRIMA con gli stessi campi della tabella di prelievo dati?

certo, il codice che ti ho scritto non crea la tabella.

Devi solo clonare quella esistente, come prima volta senza dati.

cit.

For i = 0 To rs1.Fields.Count - 1

Questo ciclo For (Next) inizia con "0" -> primo campo della Tbl1 e finisce con "-1" ultimo campo della Tbl1

Va da sé che aumentando lo "0" o diminuendo il "-1" puoi implementare i campi che vuoi.

Il ciclo viene applicato alla tabella TBL1 filtrata?

Infine, presupposto per far eseguire il codice è che devo inserirlo su evento (esempio clik) di un pulsante?

Grazie

Luca

La routine va inserita "Su clic" di un pulsante posto nella sottomaschera, altrimenti, volendolo creare nella maschera principale, bisognerebbe modificare il parametro nel codice con il riferimento alla sottomaschera.

Vladimiro

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2018-10-13T15:21:07+00:00

Ciao Luca,

ti propongo questa soluzione:

Dim rs1 As DAO.Recordset

Dim rs2 As DAO.Recordset

Dim i As Integer

Set rs1 = CurrentDb.OpenRecordset("Select * From Tbl1 where cod =" & Me!Cod, dbOpenDynaset, dbSeeChanges)

    Set rs2 = CurrentDb.OpenRecordset("Tbl2", dbOpenDynaset, dbSeeChanges)

        Do Until rs1.EOF

            rs2.AddNew

                For i = 0 To rs1.Fields.Count - 1

                    rs2(i) = rs1(i)

                Next i

            rs2.Update

        rs1.MoveNext

        Loop

rs1.Close

rs2.Close

Set rs1 = Nothing

Set rs2 = Nothing

Nel momento in cui filtri i dati in maschera, presumo che il filtro dipenda da un numero identificativo uguale per i record filtrati.

Questo numero identificativo l'ho chiamato "Cod" 

L'origine record della maschera filtrata l'ho chiamata "Tbl1"

E la nuova tabella dove confluire i dati l'ho chiamata "Tbl2"

 For i = 0 To rs1.Fields.Count - 1

 Questo ciclo For (Next) inizia con "0" -> primo campo della Tbl1 e finisce con "-1" ultimo campo della Tbl1

Va da sé che aumentando lo "0" o diminuendo il "-1" puoi implementare i campi che vuoi.

Vladimiro

La risposta è stata utile?

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

16 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2018-10-13T16:27:16+00:00

    Ciao Luca,

    ti propongo questa soluzione:

    Nel momento in cui filtri i dati in maschera, presumo che il filtro dipenda da un numero identificativo uguale per i record filtrati.

    Questo numero identificativo l'ho chiamato "Cod" 

    L'origine record della maschera filtrata l'ho chiamata "Tbl1"

    E la nuova tabella dove confluire i dati l'ho chiamata "Tbl2"

     For i = 0 To rs1.Fields.Count - 1

     Questo ciclo For (Next) inizia con "0" -> primo campo della Tbl1 e finisce con "-1" ultimo campo della Tbl1

    Va da sé che aumentando lo "0" o diminuendo il "-1" puoi implementare i campi che vuoi.

    Vladimiro

    Ciao Vladimiro

    intanto ti ringrazio per la soluzione che devo ancora provare. La prova la farò subito ma ho bisogno di avere qualche chiarimento in merito.

    cit.

    Questo numero identificativo l'ho chiamato "Cod" 

    L'identificativo che tu hai chiamato Cod, in realtà deve essere un campo della tabella (TBL1) e deve essere uguale per ogni record; nel mio caso l'unico campo che è uguale per tutti i record filtrati è il campo CAPITOLO Nel codice da te postato devo sostituire Cod con Capitolo (giusto?)

    cit.

    L'origine record della maschera filtrata l'ho chiamata "Tbl1"

    L'origine della mia SOTTOMASCHERA dovrà essere la tabella collegata al db esterno?

    cit.

    E la nuova tabella dove confluire i dati l'ho chiamata "Tbl2"In merito alla nuova tabella dove confluire i dati che posso chiamare a mio piacimento, devo crearla PRIMA con gli stessi campi della tabella di prelievo dati?

    cit.

    For i = 0 To rs1.Fields.Count - 1

    Questo ciclo For (Next) inizia con "0" -> primo campo della Tbl1 e finisce con "-1" ultimo campo della Tbl1

    Va da sé che aumentando lo "0" o diminuendo il "-1" puoi implementare i campi che vuoi.

    Il ciclo viene applicato alla tabella TBL1 filtrata?

    Infine, presupposto per far eseguire il codice è che devo inserirlo su evento (esempio clik) di un pulsante?

    Grazie

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2018-10-11T13:31:59+00:00

    Ciao a tutti, sono sempre io a disturbare per chiedere il vostro aiuto per la risoluzione di qualche problema inerente il mio progetto dbase.

    Il dbase per la programmazione di opere funziona correttamente (grazie all'aiuto di Vladimiro) ...ma da qualche giorno stò lavorando per ampliarlo e miglioralo. In particolare stò cercando di legare al mio dbase alcuni dati (tabelle) che ineriscono la gestione economica del progetto soprattutto per la gestione e rendicontazione della spesa di ogni singolo progetto.

    Ho creato un collegamento ad una tabella esterna (residente in altro dbase) che chiamerò, per comodità TBL_IMP_MANDATO di cui allego immagine:

    La tabella presenta molti dati (nell'immagine è solo un estratto molto, molto breve) di cui alcuni non interessano i progetti gestiti con il mio dbase e spesso alcuni record sono incompleti ma che a me invece interessano.

    Con una maschera cerco di filtrare i dati mediante campi di ricerca attingendo alla tabella principale (vedi figura)

    Fatta questa premessa, ciò che vorrei fare è questo:

    1. filtro i dati mediante la maschera e vengono restituiti i record che soddisfano il mio filtro;
    2. individuo i record che mi interessano (evidenziati in giallo dell'immagine)

    1. trasferire su una tabella residente nel mio dbase i record selezionati.

    vorrei utilizzare una tabella separata e residente nel dbase (e non tabella collegata) poichè è possibile che io debba completare alcuni dati mancanti (nell'esempio il codice CIG) che non posso (e non voglio) modificare sulla tabella collegata.

    La nuova tabella creata è relazionata con il mio dbase mediante il campo CUP.

    1. periodicamente dovrei aggiornare con nuovi dati la nuova tabella creata.

    Ho provato con una query di creazione tabella, ma ogni volta che la eseguo mi vengono cancellati i dati già residenti e vengono sostituiti con i nuovi.

    Ho provato anche con una query di accodamento e mi succede la stessa cosa.

    Chi sarebbe così gentile da darmi una mano per risolvere e trovare la strada giusta per creare questa nuova tabelle ed aggiornarla periodicamente????

    Grazie per la vostra collaborazione.

    Ciao

    Luca

    Ciao Luca,

    Potresti utilizzare un ciclo Do Loop.

    In che modo però filtreresti i dati da trasferire in tabella?

    Vladimiro

    Ciao Vladimiro

    il ciclo Do Loop non l'ho mai utilizzato. Provo a vedere se trovo qualcosa in merito.

    I dati vengono filtrati in modo "artigianali" mediante la maschera di cui ho allegato immagine ed è basato su uno dei textbox.

    Per il filtro agisco su una sottomaschera mediante una query (qui l'immagine)

    Ciao Luca

    La risposta è stata utile?

    0 commenti Nessun commento