Aggiornamento Sottomaschere di sola lettura create su query

di il
17 risposte

Aggiornamento Sottomaschere di sola lettura create su query

Buonasera !

Premetto che ho letto un'altra discussione simile a questa, ma non è propriamente uguale. Nel mio caso non ci sono grafici Pivot.

Nel mio caso ho una maschera principale di nome Vendita Prodotti, una sottomaschera Vendite e altre due piccole sottomaschere, una indica il totale dei beni acquistati, e l'altra mi indica le scorte. Queste due sottomaschere sono state create su due query, e nelle proprietà - dati ho messo NO ad una serie di comandi, tra cui:
- attendi post-elaborazione;
- Immissione dati;
- Consenti aggiunte;
- Consenti eliminazioni;
- Consenti modifiche.
Il dato presente nella sottomaschera SCORTE si aggiorna, record dopo record, ma solo quando passo ad un record successivo sulla maschera principale Vendite Prodotti, mentre non si aggiorna se aggiungo un nuovo record nella sottomaschera Vendite.

Ho provato ad inserire, sia nella maschera principale Vendita Prodotti che nella sottomaschera Vendite, in Evento - Dopo Aggiornamento - l'istruzione VBA me.requery, ma comunque non funziona.

Mi potete risolvere il problema ?
Grazie.
Saluti.

17 Risposte

  • Re: Aggiornamento Sottomaschere di sola lettura create su query

    Io non ho capito se le 2 sottomaschere TotaleBeniAcquistati e Scorte sono sottomaschere di VenditaProdotti oppure di Vendite.
    Hai controllato le proprietà "Collega campi secondari" e "Collega campi master"?
  • Re: Aggiornamento Sottomaschere di sola lettura create su query

    Scusa, hai ragione. Le due sottomaschere collegate alle query, sono sottomaschere della maschera principale Vendita Prodotti.
  • Re: Aggiornamento Sottomaschere di sola lettura create su query

    Per quanto riguarda i Campi Master e campi Secondari, sono collegati con:
    Campi Master: NomeProdotto della tabella Prodotti (che è alla base della maschera principale Vendita Prodotti);
    Campi Secondari: NomeProdotto della Query SCORTE (a sua volta la query è formata da due query: Query Acquisti con due campi: NomeProdotto e QuantitaAcquistata; e Query Vendite con due campi: IDProdotti e QuantitaVenduta; il collegamento tra le query avviene tra NomeProdotto e IDProdotti; nei campi della query SCORTE c'è: NomeProdotto, QuantitaAcquistata; QuantitaVenduta ed il campo alias SCORTE con la differenza tra i campi QuantitaAcquistata e QuantitaVendute).
  • Re: Aggiornamento Sottomaschere di sola lettura create su query

    Aiuto! Devo essere sincero. Non capisco perchè hai gestito una tal complessa maschera con tutte queste sottomaschere...che tra l'altro non poggiano su tabelle, ma sono query con calcoli e ricalcoli vari...di cui non comprendo affatto la logica.
    Mi attengo, pur senza alcuna convinzione, alla "mera" descrizione dei tuoi oggetti.

    Quando parlo di "Collega campi secondari" e "Collega campi master" mi riferisco a 2 proprietà di sottomaschera (le puoi trovare solo cliccando sulla "cornice" della sottomaschera e cercando le sue proprietà). Quasi sempre si utilizza il campo chiave e quasi sempre il campo ha lo stesso nome per entrambe le proprietà.
    Questo a rigore di logica accademica.

    Però...sto rischiando di andare fuori dalle righe...perchè (mi sembra) il tuo assetto organizzativo sia "fuori logica e convenienza".
    Concludendo, non ci ho capito nulla e non sono in grado di seguirti.
  • Re: Aggiornamento Sottomaschere di sola lettura create su query

    La mia richiesta di aiuto riguarda il come posso aggiornare la sottomaschera SCORTE, senza dover chiudere e riaprire la maschera Vendita Prodotti o senza dove passare ad un altro record e poi ritornare a quello precedente per vedere se c'è stato l'aggiornamento del dato delle scorte (aggiornamento che in quel modo avviene).
    C'è qualcuno che mi può aiutare ?
  • Re: Aggiornamento Sottomaschere di sola lettura create su query

    Prova con
    Me.Refresh
    ma a me suona come una pezza a colori...
  • Re: Aggiornamento Sottomaschere di sola lettura create su query

    OsvaldoLaviosa ha scritto:


    Prova con
    Me.Refresh
    ma a me suona come una pezza a colori...
    Ho già provato con l'istruzione Me.Requery, sia sulla maschera principale "Vendita Prodotti" che sulla sottomaschera SCORTE.

    Non funziona lo stesso. L'aggiornamento non avviene come ho chiesto all'inizio di questa discussione.
  • Re: Aggiornamento Sottomaschere di sola lettura create su query

    ProgrammD ha scritto:


    OsvaldoLaviosa ha scritto:


    Prova con
    Me.Refresh
    ma a me suona come una pezza a colori...
    Ho già provato con l'istruzione Me.Requery, sia sulla maschera principale "Vendita Prodotti" che sulla sottomaschera SCORTE.

    Non funziona lo stesso. L'aggiornamento non avviene come ho chiesto all'inizio di questa discussione.
    Il metodo Refresh si usa solo se i dati vengono EDITATI se, invece c'è l'opzione vengano AGGIUNTI/CANCELLATI con azioni esterne, allora si usa il Requery a prescindere.

    Non so quale sia la tua casistica, ma dove scrivi Me.Requery...? Nella Form o nelle SubForm...?
  • Re: Aggiornamento Sottomaschere di sola lettura create su query

    @Alex ha scritto:


    ProgrammD ha scritto:


    OsvaldoLaviosa ha scritto:


    Prova con
    Me.Refresh
    ma a me suona come una pezza a colori...
    Ho già provato con l'istruzione Me.Requery, sia sulla maschera principale "Vendita Prodotti" che sulla sottomaschera SCORTE.

    Non funziona lo stesso. L'aggiornamento non avviene come ho chiesto all'inizio di questa discussione.
    Il metodo Refresh si usa solo se i dati vengono EDITATI se, invece c'è l'opzione vengano AGGIUNTI/CANCELLATI con azioni esterne, allora si usa il Requery a prescindere.

    Non so quale sia la tua casistica, ma dove scrivi Me.Requery...? Nella Form o nelle SubForm...?
    Attualmente il Me.Requery l'ho inserito nella maschera principale "Vendite Prodotti" e nella sottomaschera "Vendite". Entrambe queste maschere ricevono i dati. Con queste non ho problemi.
    Il dato che non si aggiorna, dopo ogni immissione di nuovi record nella sub-form "Vendite" è nella sub-form SCORTE che è stata creata su una query di calcolo.
    Per vedere aggiornato il dato, devo uscire e rientrare nella maschera.
    Non mi piace questo sistema !!
    Questa sub-form SCORTE è solo di visualizzazione, mi deve indicare quante sono le scorte ancora da vendere, per cui nei suoi DATI ho tolto la possibilità di fare aggiunte e modifiche.
    Il collegamento tra immissione nuovi record e aggiornamento del dato SCORTE è tra due le sub-form citate.
    Mi puoi risolvere il problema ?
    Grazie.
    Saluti.
  • Re: Aggiornamento Sottomaschere di sola lettura create su query

    Devi usare il metodo REQUERY sicuramente, ma lo stai usando nel modo sbagliato probabilmente.
    Non puoi inserirlo nella SubForm in quanto non risente dei alcun EVENTO che possa essere usabile.

    Da quanto ho capito devi usare l'Evento AFTERUPDATE e/o AFTERINSERT della Form che INSERISCE/EDITA i dati e su quello eseguire il REQUERY della Sf incriminata
    
    Private Sub Form_AfterUpdate()
       Forms!NomeFormMaster!NomeSubForm.Form.Requery
    End Sub
  • Re: Aggiornamento Sottomaschere di sola lettura create su query

    @Alex ha scritto:


    Devi usare il metodo REQUERY sicuramente, ma lo stai usando nel modo sbagliato probabilmente.
    Non puoi inserirlo nella SubForm in quanto non risente dei alcun EVENTO che possa essere usabile.

    Da quanto ho capito devi usare l'Evento AFTERUPDATE e/o AFTERINSERT della Form che INSERISCE/EDITA i dati e su quello eseguire il REQUERY della Sf incriminata
    
    Private Sub Form_AfterUpdate()
       Forms!NomeFormMaster!NomeSubForm.Form.Requery
    End Sub

    Sto provando con il codice che hai postato in AfterInsert, ma esce un errore.

    L'istruzione: Forms!VENDITAPRODOTTI!VENDITESottomaschera.SCORTE.Requery mi da il seguente errore:
    Errore di run-time 2450: Microsoft Access: impossibile trovare la maschera'VENDITAPRODOTTI'.
    dove:
    - VENDITAPRODOTTI è la maschera principale, ma non quella dove viene immesso il record;
    - VENDITESottomaschera è la sub-form dove viene immesso il record;
    - SCORTE è la sub-form dove c'è il campo SCORTE che si deve aggiornare ad ogni nuovo inserimento dei record in VENDITESottomaschera.
    ...............................................................
    Con l'istruzione:
    Forms!VENDITESottomaschera!SCORTE.Form.Requery
    ho lo stesso errore di prima, solo che questa volta non riconosce la sub-form VENDITESottomaschera.

    Dov'è l'errore ?
  • Re: Aggiornamento Sottomaschere di sola lettura create su query

    Analizza con attenzione questa sintassi (suggerita da @Alex)(te la racconto a parole mie):
    Forms!NomeFormMaster!NomeSubForm.Form.Requery
    Forms è una parola obbligatoria
    NomeFormMaster è il nome della maschera principale
    NomeSubForm è il nome della sottomaschera
    Form va messo perchè solo in questo modo puoi accedere ai controlli sottostanti la sottomaschera oppure tutte le proprietà della sottomaschera (tra cui anche Requery)
    Requery è appunto la proprietà che vuoi tirar fuori dalla sottomaschera (grazie alla penultima parolina Form)
    I "punti esclamativi" e "punti" sono esatti messi in quel modo, rispettali tutti.
  • Re: Aggiornamento Sottomaschere di sola lettura create su query

    OsvaldoLaviosa ha scritto:


    Analizza con attenzione questa sintassi (suggerita da @Alex)(te la racconto a parole mie):
    Forms!NomeFormMaster!NomeSubForm.Form.Requery
    Forms è una parola obbligatoria
    NomeFormMaster è il nome della maschera principale
    NomeSubForm è il nome della sottomaschera
    Form va messo perchè solo in questo modo puoi accedere ai controlli sottostanti la sottomaschera oppure tutte le proprietà della sottomaschera (tra cui anche Requery)
    Requery è appunto la proprietà che vuoi tirar fuori dalla sottomaschera (grazie alla penultima parolina Form)
    I "punti esclamativi" e "punti" sono esatti messi in quel modo, rispettali tutti.

    Comunque non funziona.

    Stavo pensando di usare delle caselle di testo al posto delle sub-form. Secondo Voi è più performante ?
  • Re: Aggiornamento Sottomaschere di sola lettura create su query

    Io invece di dire che non funziona, preferisco dire che TU non riesci a capire come gestirlo ed a farlo funzionare.

    Se vuoi mettere un Demo Semplificato in un'area Share, con qualche spiegazione di come replicare il problema a livello delle AZIONI da compiere... possiamo provare a capire, altrimenti...
Devi accedere o registrarti per scrivere nel forum
17 risposte