Modifica origine record da VBA

di il
20 risposte

Modifica origine record da VBA

Buongiorno. Premetto che sono alle prime armi, quindi mi scuso per eventuali inesattezze.
Sto creando una libreria cinematografica e, quando inserisco un attore nell'apposita tabella, ho messo un codice che estrapola l'ultimo elemento inserito nella tabella, ne crea una query con lo stesso nome (duplicandola da una query default chiamata prova) e duplica una maschera default nominandola come la query.
L'unico problema é che non riesco a variare l'origine record dinamicamente, cosí da impostare il nome del nuovo attore.
Posto il codice che sto utilizzando:
Ringrazio anticipatamente, liberi di insultarmi

Private Sub Form_AfterInsert()
DoCmd.CopyObject , "prova", acQuery, "copiare"
DoCmd.Rename DLast("Nome", "Attori"), acQuery, "prova"
Dim qdf As DAO.QueryDef
Dim qdfOLD As String
Set qdf = CurrentDb.QueryDefs(DLast("Nome", "Attori"))
With qdf
qdfOLD = .SQL
.SQL = Replace(.SQL, "Robert De Niro", DLast("Nome", "Attori"))

End With
Set qdf = Nothing
DoCmd.CopyObject , "caco", acForm, "Copiareschedaattori"
DoCmd.Rename DLast("Nome", "Attori"), acForm, "caco"
End Sub

20 Risposte

  • Re: Modifica origine record da VBA

    Salve se ho ben capito:
    Devi aggiungere un record con determinate caratteristiche? (es: nomeAutore)
    Io non parlerei di query ma di tabelle (da queste dipendono le query)
    Sinteticamente ti suggerisco:
    1) Crei una Tab di default CopiaIncolla della Tab Originale (sola struttura) nella TabDefault movimenti 1 solo record
    2) Aggiorni l'unico record con i dati di tuo interesse compresa (questo lo vedremo in seguito)
    3) Accodi l'unico record della TabDefault alla TabOriginale > requery della form.
    Più facile a farsi che a dirsi.
    P.S. Io non insulto mai
  • Re: Modifica origine record da VBA

    Ciao Gianni, grazie per la risposta.
    Io ho giá impostato la maschera con i campi e la struttura che mi interessa.
    Infatti se vado a modificare manualmente la scritta nelle proprietà, alla voce "origine record", con la query interessata, mi si aggiornano a cascata tutti i campi.
    Il mio problema é proprio modificare l'origine della maschera impostando un'altra query.
  • Re: Modifica origine record da VBA

    Ho provato la funzione recordsource, ma il mio problema é modificare l'origine record con l'ultimo nome attore inserito.
    Per rinominare la Query e la maschera ho utilizzato la funzione DLast. Mi chiedevo se fosse possibile aggiornare dinamicamente anche l'origine record della maschera
  • Re: Modifica origine record da VBA

    Gaboman87 ha scritto:


    Sto creando una libreria cinematografica e, quando inserisco un attore nell'apposita tabella, ho messo un codice che estrapola l'ultimo elemento inserito nella tabella, ne crea una query con lo stesso nome (duplicandola da una query default chiamata prova) e duplica una maschera default nominandola come la query.
    Io non capisco tutto questo ragionamento "arzigogolato". Qualcosa mi dice di prendere una strada più semplice. Puoi raccontare passo passo cosa devi fare veramente? Magari fai un esempio concreto.
  • Re: Modifica origine record da VBA

    Ma perchè devi cambiare il recordsource?
    Dlast che c'entra?
    puoi postare il codice che utilizzi e da dove lo lanci.
  • Re: Modifica origine record da VBA

    OsvaldoLaviosa ha scritto:


    Gaboman87 ha scritto:


    Sto creando una libreria cinematografica e, quando inserisco un attore nell'apposita tabella, ho messo un codice che estrapola l'ultimo elemento inserito nella tabella, ne crea una query con lo stesso nome (duplicandola da una query default chiamata prova) e duplica una maschera default nominandola come la query.
    Io non capisco tutto questo ragionamento "arzigogolato". Qualcosa mi dice di prendere una strada più semplice. Puoi raccontare passo passo cosa devi fare veramente? Magari fai un esempio concreto.
    Hai ragione, probabilmente sbaglio io.
    Cerco di essere il più chiaro possibile.
    Ho una tabella che raccoglie gli attori in un database riguardante il cinema.
    Volevo creare delle maschere consultabili, che raccogliessero i film nel database in cui hanno recitato, i loro dati...
    Quindi ho creato una query che mostra soltanto i film in cui ha recitato uno specifico attore.
    Per non dover creare manualmente ogni singola maschera, ho fatto questo automatismo che, dall'inserimento dell'attore, crea in automatico la query e la maschera corrispondente.
    Va tutto bene eccetto il fatto che non riesco a modificare l'origine record della maschera di default che uso per non dover tutte le volte risettare il layout.
    Spero di essermi spiegato meglio e grazie ancora
  • Re: Modifica origine record da VBA

    Gianni55 ha scritto:


    Ma perchè devi cambiare il recordsource?
    Dlast che c'entra?
    puoi postare il codice che utilizzi e da dove lo lanci.
    Il codice che ho postato sopra é inserito nell'evento di inserimento di un record nella maschera attori, riferita alla tabella attori
  • Re: Modifica origine record da VBA

    Gaboman87 ha scritto:


    Gianni55 ha scritto:


    Ma perchè devi cambiare il recordsource?
    Dlast che c'entra?
    puoi postare il codice che utilizzi e da dove lo lanci.
    Il codice che ho postato sopra é inserito nell'evento di inserimento di un record nella maschera attori, riferita alla tabella attori
    Mai vista una cosa del genere per aggiungere un record.
    Rinominare una query altrettanto assurdo.
    Le Tab contengono i dati, i dati si aggiungono o eliminano da queste punto.
    Le query servono a raccogliere, filtrare fare calcoli.
    Le maschere per vedere i dati.
    I report per stampare.
    Se usciamo fuori da queste conoscenze parliamo del nulla.

    Il codice per modificare il recordsource e questo:
    Me.Form.RecordSource = "LaTuaQuery"

    Non l'avessi capito NON HA ALCUN SENSO.
  • Re: Modifica origine record da VBA

    Sfogati pure
    Ma io non ho fatto tutto ciò per aggiungere un record.
    Io il record lo aggiungo nella maschera della tabella.
    Dopo che lo aggiungo ho automatizzato la creazione di una query e della maschera di questa query, tutto qua.
    Poi ci sta che sicuramente esisterá un metodo più semplice e corretto
  • Re: Modifica origine record da VBA

    Gianni55 ha scritto:


    Ma perchè devi cambiare il recordsource?
    Dlast che c'entra?
    puoi postare il codice che utilizzi e da dove lo lanci.
    Dlast perché vado a pescare l'ultimo record inserito nella tabella. Non so se sia la via più corretta, ma funziona
  • Re: Modifica origine record da VBA

    Gaboman87 ha scritto:


    Ho una tabella che raccoglie gli attori in un database riguardante il cinema.
    Volevo creare delle maschere consultabili, che raccogliessero i film nel database in cui hanno recitato, i loro dati...
    Quindi ho creato una query che mostra soltanto i film in cui ha recitato uno specifico attore.
    Spiega passo passo come ottieni questo risultato facendo anche un esempio pratico. Lo propongo io:
    - l'utente Osvaldo Laviosa vuole sapere dal tuo database tutti i film in cui ha recitato Anna Magnani
    - cosa occorre fare? Cosa si mette in moto? Cita NOMI PROPRI di tabelle, campi, query. Se hai una query con parametro (come mi aspetto che sia) raccontalo chiaramente.

    Gaboman87 ha scritto:


    Per non dover creare manualmente ogni singola maschera, ho fatto questo automatismo che, dall'inserimento dell'attore, crea in automatico la query e la maschera corrispondente.
    Qua ci perdiamo tutti...non capiamo. Reset: spiega il punto precedente che ti ho evidenziato.
  • Re: Modifica origine record da VBA

    OsvaldoLaviosa ha scritto:


    Gaboman87 ha scritto:


    Ho una tabella che raccoglie gli attori in un database riguardante il cinema.
    Volevo creare delle maschere consultabili, che raccogliessero i film nel database in cui hanno recitato, i loro dati...
    Quindi ho creato una query che mostra soltanto i film in cui ha recitato uno specifico attore.
    Spiega passo passo come ottieni questo risultato facendo anche un esempio pratico. Lo propongo io:
    - l'utente Osvaldo Laviosa vuole sapere dal tuo database tutti i film in cui ha recitato Anna Magnani
    - cosa occorre fare? Cosa si mette in moto? Cita NOMI PROPRI di tabelle, campi, query. Se hai una query con parametro (come mi aspetto che sia) raccontalo chiaramente.

    Gaboman87 ha scritto:


    Per non dover creare manualmente ogni singola maschera, ho fatto questo automatismo che, dall'inserimento dell'attore, crea in automatico la query e la maschera corrispondente.
    Qua ci perdiamo tutti...non capiamo. Reset: spiega il punto precedente che ti ho evidenziato.
    Ok, provo a spiegare meglio.
    In questo caso l'automatismo serve a me amministratore mentre popolo il database.
    Avendo previsto di creare delle schede attori a cui gli utenti posso attingere, dovrei creare ogni singola scheda dopo aver inserito ogni attore.
    Ogni scheda fa capo a una query con all'interno campi della tabella attori e un campo della tabella film.
    Inserendo nel criterio della Query ad esempio "Robert De Niro", riesco a vedere solo i film dove ha recitato.

    Quindi io aggiungo un nuovo attore alla tabella "attori", e il codice associato alla maschera fa si che in automatico, con evento impostato "dopo inserimento", si copi in automatico una query (da una query di default), vada a modificare il nome della nuova query (per comodità) e il criterio ricavandoli con la funzionalità DLast dall'ultimo record attori che ho inserito.
    Ovvero: inserisco l'attore Matt Damon, duplico la query default che a sua volta si chiamerà Matt Damon, che avrá un criterio Matt Damon.
    Poi viene duplicata una maschera default, con il layout che ho progettato, e va a chiamarsi in automatico Matt Damon.
    L'ultima cosa che resta e far si che a questa tabella default venga modificato il recordsource in Matt Damon.
    In questo modo, al posto di dover inserire e modificare manualmente ogni singola scheda, mi basterà digitare il nome attore nella tabella.
  • Re: Modifica origine record da VBA

    Mah questa riga di codice l'hai provata?
    Me.Form.RecordSource = "LaTuaQuery"
  • Re: Modifica origine record da VBA

    Gaboman87 ha scritto:


    si copi in automatico una query (da una query di default), vada a modificare il nome della nuova query (per comodità) e il criterio ricavandoli con la funzionalità DLast dall'ultimo record attori che ho inserito.
    Ovvero: inserisco l'attore Matt Damon, duplico la query default che a sua volta si chiamerà Matt Damon, che avrá un criterio Matt Damon.
    Le query NON si duplicano ne si RINOMINANO.
    Se continui su questa strada diventa una fatica consigliarti qualcosa.
Devi accedere o registrarti per scrivere nel forum
20 risposte