Aggiornare dati maschera principale da altra maschera

di il
6 risposte

Aggiornare dati maschera principale da altra maschera

Salve piccolo intoppo riguardante l'aggiornamento dei dati dell'elenco a discesa nella maschera principale da altra maschera che serve ad aggiornare questo elenco, spiego:

Ho la Tabella principale chiamata Parco_macchine con i vari campi ripetuti 4 volte in base a quante periferiche ci sono quindi: periferica1, seriale1, cod1, modello1, poi periferica2, seriale2, cod2, modello2, ecc quindi x4 di questa tabella i 4 campi modello1,2,3,4, e un elenco a discesa dove scelgo il modello, ed e agganciato ad una tabella chiamata Modelli).

la tabella parco macchine ha una sua maschera chiamata "postazioni" con tutti i campi inseriti. quindi io inserisco i vari dati e tutto va, scelgo il modello dall'elenco in discesa e fin qui ok. ora a fianco dei campi modello ho messo un pulsante che se non ho il modello in elenco, con click e macro apre una maschera "aggiungi modello" e aggiunge nuovo record per inserire un modello nuovo. Questa maschera e legata alla tabella Modelli, e qui l'intoppo inserisco il nuovo modello salvo e vorrei che automaticamente senza che richiuda e riapra la maschera principale, l'elenco si aggiornasse, quindi mi so spulciato un po su internet e ho visto che potevo aggiungere usare il requery, quindi sull'evento Su chiusura della maschera aggiungi modello ho inserito questo codice:

Private Sub Form_Close()
Forms!postazioni.Requery
End Sub


credendo che una volta chiusa la maschera aggiungi modello , l'elenco a discesa della maschera principale si aggiornasse, ma niente, ora dove ho toppato?

6 Risposte

  • Re: Aggiornare dati maschera principale da altra maschera

    La tecnica è differente...
    Se dalla Form1 apri la Form2, e la chiusura della Form2 devi aggiornare la Form1... si deve sfruttare l'apertura in modalità SINCRONA che si attua imponendo il parametro [acDialog] nella Funzione OpenForm.
    Quindi si mette un requery...
    
    Private Sub Btn_Click()
       DoCmd.OpenForm "Form2", , , , , acDialog
       Me.Requery
    End Sub
    Il codice viene sospeso finchè la Form2 è Aperta e Visibile..., dopo di che riprende l'esecuzione...!
  • Re: Aggiornare dati maschera principale da altra maschera

    @Alex ha scritto:


    La tecnica è differente...
    Se dalla Form1 apri la Form2, e la chiusura della Form2 devi aggiornare la Form1... si deve sfruttare l'apertura in modalità SINCRONA che si attua imponendo il parametro [acDialog] nella Funzione OpenForm.
    Quindi si mette un requery...
    
    Private Sub Btn_Click()
       DoCmd.OpenForm "Form2", , , , , acDialog
       Me.Requery
    End Sub
    Il codice viene sospeso finchè la Form2 è Aperta e Visibile..., dopo di che riprende l'esecuzione...!
    Quindi con acDialog al click per aprire la form2 e come se si aprisse un canale tra la form 1 e 2 e e rimane aperto finche nn chiudo la form 2? ho inteso bene?

    e nn va messo come macro ma messo nell'evento click come vba? ho recepito bene?
  • Re: Aggiornare dati maschera principale da altra maschera

    Alex ho provato grazie! ho creato un pulsante senza autocomposizione e sul l'evento click ho inserito una routine:

    Private Sub btnNmodello_Click()
    DoCmd.OpenForm "Aggiungi_Modello", , , , , acDialog
    Me.Requery
    End Sub

    la maschera Aggiungi_Modello ha anche un pulsante salva e elimina, quindi ho fatto salva. ho chiuso la maschera ho notato che faceva il refresh di quella principale, ma in elenco non compariva la voce immessa, neanche se andavo avanti con le schede vedevo che compariva la voce visto che cmq fa un aggiornamento. quindi ho chiuso la maschera principale, ho riaperto e ho notato che comparivano, poi ho fatto l'inverso, ho fatto aprire col pulsante la maschera Aggiungi_Modello ho cercato le voci aggiunte e ho fatto elimina record, poi ho chiuso, ha fatto il refresh e l'ha eliminato, ma rimane la voce #Eliminato finche non riavvio la maschera principale quindi questa stringa diciamo scompare
  • Re: Aggiornare dati maschera principale da altra maschera

    Alex credo di aver risolto (spero bene) spulciando in un post su MASTERDRIVE dove ad un trhead simile te hai commentato, ti posto il link

    http://forum.masterdrive.it/microsoft-office-access-vba-23/docmd-requery-controllo-in-form-diversa-quella-corrente-18898/:

    quindi ho sostituito la routine sull'evento click del pulsante da:

    Private Sub btnNmodello_Click()
    DoCmd.OpenForm "Aggiungi_Modello", , , , , acDialog
    Me.Requery
    End Sub

    con questa:

    Private Sub btnNmodello_Click()
    DoCmd.OpenForm "Aggiungi_Modello", , , , , acDialog
    Me!Modello1.Requery
    End Sub

    ho aggiunto il nome della combo dove' in grassetto. quindi 4 pulsanti per 4 volte le voci Modello

    ho ragionato bene???

    ps. neanche un minimo di sfarfallio del refresh
  • Re: Aggiornare dati maschera principale da altra maschera

    Non so se hai ragionato bene, ma non è quello che hai chiesto, nel senso che quello che hai scritto ora è per una SOTTOMASCHERA oppure per un Controllo DataBound come ListBox o Combo...

    Mi riferisco all'oggetto [Modello1] che citi...
  • Re: Aggiornare dati maschera principale da altra maschera

    @Alex ha scritto:


    Non so se hai ragionato bene, ma non è quello che hai chiesto, nel senso che quello che hai scritto ora è per una SOTTOMASCHERA oppure per un Controllo DataBound come ListBox o Combo...

    Mi riferisco all'oggetto [Modello1] che citi...
    No? forse ho spiegato male io?

    allora io ho 2 tabelle, una Parco_macchine, e una Modelli la principale e la prima, e quella modelli ha dentro solo elenco di modelli di monitor , case, mouse ecc, tipo Acer22nl, logitech24x1 ecc.

    nella tabella principale ci sono 4 campi per ogni periferica per descriverne ognuna, quindi : periferica1, seriale1, cod1, modello1
    periferica2, seriale2, cod2, modello2
    periferica3, seriale3, cod3, modello3
    periferica4, seriale4, cod4, modello4

    di questi campi, solo i campi modello1, modello2, modello3, modello4,
    sono collegate alla tabella Modelli, cosi da un elenco a discesa scelgo il modello senza che lo riscrivo se sono 3 periferiche uguali (esempio uno puo avere 2 monitor stesso modello ma dati differenti)

    quello che volevo e che nella maschera postazioni (agganciata alla tabella parco macchine), quando quando sceglievo il modello dalla lista, e magari era un modello nuovo, per aggiornare aggingendolo, con un pulsante mi si aprisse na mascherina come poupop (questa agganciata alla tabella modelli) e inserendo il modello nuovo aggiornasse la tabella modelli, poi appena la chiudevo nel campo modello della maschera principale mi si aggiornasse l'elenco. questo onde evitare che dovevo chiudere e riaprire la maschera principale per far risultare l'aggiornamento.
    si capisce ora?

    te dirai perchè scrivere:

    Private Sub btnNmodello_Click()
    DoCmd.OpenForm "Aggiungi_Modello", , , , , acDialog
    Me!Modello1.Requery
    End Sub

    e non:

    Private Sub btnNmodello_Click()
    DoCmd.OpenForm "Aggiungi_Modello", , , , , acDialog
    Me.Requery
    End Sub

    perche ho visto che non specificando il campo da aggiornare, questo nnn aggiornava niente anche se faceva il refresh,

    quindi 4 campi modello1, modello2, modello3, modello4, ho messo 4 pulsanti vicino a ognuno che esegue l'apertura della mascherina aggiungi, e alla chiusura aggiorna il campo ho fatto cosi perchè nn so ssu quale periferica poi mi ci ritrovo ad aggiornare il modello, e vero che se aggiorni uno si aggiornano tutti, e dovrebbe essere questo:

    Private Sub btnNmodello_Click()
    DoCmd.OpenForm "Aggiungi_Modello", , , , , acDialog
    Me.Requery
    End Sub

    quindi aggiorna tutti i campi della maschera, ma nn va, o lo debbo scrivere differentemente, se ci sarebbe uno che vale per tutti quindi tipo:

    Private Sub btnNmodello_Click()
    DoCmd.OpenForm "Aggiungi_Modello", , , , , acDialog
    Me.[form]![postazioni].requery
    End Sub

    ne farei un solo tasto per tutta la maschera ma nn trovo la sintassi esatta, perche con solo me.requery nn me lo fa

    ho reso quello che volevo ottenere? ci so andato ad intuito per questo dico, funzina ma nn so se e la prassi giusta
Devi accedere o registrarti per scrivere nel forum
6 risposte