Campo in una sottomaschera contenuta in una Maschera di Spostamento

di il
12 risposte

Campo in una sottomaschera contenuta in una Maschera di Spostamento

Buonasera al forum

una [Maschera di spostamento] contiene una sottomaschera [Documenti acquisti] la quale contiene un campo “Contratto”

Nel campo “Contratto” con l'evento “dopo aggiornamento” ho inserito i seguente codice che non funziona ma che non rimanda nessun errore

Private Sub Contratto_AfterUpdate()
If Forms![Maschera di Spostamento].Forms![Documenti acquisti].[Contratto] = "2270100831" Then
      MsgBox "Attenzione! Per questo contratto è necessario un aumento del 8,9% del consuntivo.", vbCritical, "Attenzione"
End If
End Sub

premetto che “Contratto” è il nome del campo e invece "Contratto superiore" è l'origine dati

Dopo di che ho provato ad cambiare la parte in grassetto con:

If Forms![Maschera di Spostamento].Forms![Documenti acquisti].[Contratto].Value = "2270100831" Then
If Forms("Maschera di Spostamento").Controls("Documenti acquisti").Form.Controls("Contratto superiore").Value = "2270100831" Then
if Forms("Maschera di Spostamento").Controls("Documenti acquisti").Form.Controls("Contratto").Value = "2270100831" Then
If Me.[Contratto superiore].Value = "2270100831" Then
If Me.Contratto.Value = "2270100831" Then

che non funzionano ma che non rimandano nessun errore, chiedo se qualcuno può indicarmi dove sbaglio

Una particolarità da aggiungere: inserisco una immagine dove si notano le maschere evidenziate in azzurro (Maschera di spostamento) e giallo (Documenti acquisti) è sono quelle creata da me e interessate nel percorso.

La feccia nera indica un punto dove ho cliccato nella maschera dopo di che in alto a destra è comparso nel nome elemento “Sottomascheraspostamento” evidenziato in verde che non ho creato io.

Quindi chiedo se per caso va inserito anche questo elemento nel percorso

Grazie a tutti

12 Risposte

  • Re: Campo in una sottomaschera contenuta in una Maschera di Spostamento

    Cambiando = con <> cosa succede?

  • Re: Campo in una sottomaschera contenuta in una Maschera di Spostamento

    Certo che non ti da errore.

    Se la condizione IF non è soddisfatta e non essendoci una condizione else, il codice esegue il confronto, lo trova falso e passa oltre.

    Se aggiungi un 

    Else
    Msgbox"errore"
    end if

    sicuramente ti apparrà errore.

    E comunque ti consiglio di ripassare le tecniche di debug.

    Controllare passo passo il codice è il primo step per capire i problemi.

    Con il debug, vedrai anche che posizionando il cursore su FORM! ti apparirà un popup con scritto “” cioè vuoto.

    Per rispondere alla domanda.
    Certo che devi includere anche il nome della sottomaschera spostamento, altrimenti non ti trova i controlli contenuti in essa.

    E c'è da dire che usare la maschera spostamento non è del tutto agevole, perchè c'è differenza se costruisci le maschere all'interno dello spostamento o se ne associ una già esistente.

  • Re: Campo in una sottomaschera contenuta in una Maschera di Spostamento

    Ho seguito le istruzioni di questo link https://www.iprogrammatori.it/forum-programmazione/access/script-vba-per-riferirsi-controllo-contenuto-una-sottomaschera-una-maschera-inse-t45465.html

    Riporto qui sotto quanto scritto nel link

    "Ho risolto subito dopo aver fatto richiesta di assistenza, per chi avesse problemi in questo modo:
    lo script corretto è
    Forms!frmspostamento.Form!SottomascheraSpostamento.Form!subfrm1!txt2 = Me.txt1

    "SottomascheraSpostamento" è il nome che access ha assegnato a tutte le le maschere inserite nelle maschere spostamento nei pulsanti spostamento. quindi non c'è bisogno di inserire "frm2".
    grazie a chi ha dedicato il tempo per rispondere."

    il codice è inserito nel campo “Contratto” della maschera “Documenti acquisti” e…… con l'evento Afterupdate non funziona e non manda nessuna messaggio d'errore, invece ………….con l'evento Click funziona da dio.

    Mi viene da pensare che il percorso è corretto ………se funziona con Click, ma con l'evento Afterupdate……non capisco perchè

  • Re: Campo in una sottomaschera contenuta in una Maschera di Spostamento

    Scusate nell'immagine del codice dell'evento Afterupdate manca il "Contratto.Value <> "2270100831" Then"

    Anche inserendolo…….non funziona

  • Re: Campo in una sottomaschera contenuta in una Maschera di Spostamento

    Ho inserito il codice nel Modulo2 creato appositamente

    Public Sub Contratto()

    If Forms![Maschera di spostamento].Form!SottomascheraSpostamento!Contratto.Value = "2270100831" Then

    MsgBox "Attenzione Per questo contratto è necessario un aumento del 8,9% del consuntivo.", vbCritical, "Attenzione"
    Else
    MsgBox "errore"

    End If
    End Sub

    provando il debug ……tutto ok ed escono le finestre di messaggio

    Poi nel campo “Contratto” all'evento Afterupdate ho inserito il richiamo “Call Modulo2.Contratto

    ma Afterupdate non funziona se lo metto nell'evento DblClick viene richiamato il codice nel Modulo2 e funziona

  • Re: Campo in una sottomaschera contenuta in una Maschera di Spostamento

    Metti il messaggio prima dell'if e verifica che l'evento afterupdate viene richiamato

  • Re: Campo in una sottomaschera contenuta in una Maschera di Spostamento


    Private Sub Contratto_AfterUpdate()
    MsgBox "errore"
    End Sub

    niente da fare non funziona, neanche in altri campi di altre sottomaschere

  • Re: Campo in una sottomaschera contenuta in una Maschera di Spostamento

    07/08/2023 - Moroeno ha scritto:



    Private Sub Contratto_AfterUpdate()
    MsgBox "errore"
    End Sub

    niente da fare non funziona, neanche in altri campi di altre sottomaschere

    Adesso devi scoprire perché non fa l'update…

    Ma il record (o quello che è) lo stai inserendo o modificando?

    Se io scrivo qualcosa in un evento, quel qualcosa viene eseguito solo se si verifica l'evento.

    Se tu non stai aggiornando niente, è normale che il codice non viene eseguito.

    Cosa aggiorni? Un form? Un campo? Una record?

    Contratto è un campo che cambia di valore? Se non cambia, non esegue nulla.

    Prova a cambiare il valore nel campo contratto e salvi il record.

  • Re: Campo in una sottomaschera contenuta in una Maschera di Spostamento

    Il record è un campo che si aggiorna  filtrando con una casella combinata una query e la query ‘l’origine dei dati, 

    Ho provato anche a mettere nel vba anche “Contratto superiore” che è l'origine dei dati di del Campo “Contratto” 

    Ho provato anche con l'evento ……“Su Modifica”

    Ho provato a inserire una casella di testo che prenda il valore dal campo contratto ed inserire l'evento Afterupdate

    tutto inutile, non funziona

  • Re: Campo in una sottomaschera contenuta in una Maschera di Spostamento

    Si brancola nel buio…

    07/08/2023 - Moroeno ha scritto:


    Il record è un campo che si aggiorna  filtrando con una casella combinata una query e la query ‘l’origine dei dati

    Quindi il campo non fa l'update ma semplicemente cambia il record.. 

    Update significa che va a sostituire i dati del record, non di un edit.

    Fare un requery non è un update.

    Con update aggiorni i dati in tabella.

    Prova con l'evento change a mandare un messaggio.

  • Re: Campo in una sottomaschera contenuta in una Maschera di Spostamento

    07/08/2023 - Moroeno ha scritto:


    Ho seguito le istruzioni di questo link https://www.iprogrammatori.it/forum-programmazione/access/script-vba-per-riferirsi-controllo-contenuto-una-sottomaschera-una-maschera-inse-t45465.html

    Riporto qui sotto quanto scritto nel link
    "SottomascheraSpostamento" è il nome che access ha assegnato a tutte le le maschere inserite nelle maschere spostamento nei pulsanti spostamento. quindi non c'è bisogno di inserire "frm2".

    E' presente il link quindi chi è interessato può consultarlo agevolmente per intero. Intervengo solo per evidenziare che quanto hai riportato è stato da me a suo tempo in parte corretto: SottomascheraSpostameno non è il nome che access ha assegnato a tutte le maschere, ma il controllo Container che ospita le varie sottomaschere. Per una spiegazione dettagliata consultare il thread citato.

  • Re: Campo in una sottomaschera contenuta in una Maschera di Spostamento

    Ho provato anche con l'evento ……“Change”

    Ho provato a inserire una casella di testo che prenda il valore dal campo contratto ed inserire l'evento Afterupdate

    Anche nelle altre sottomaschere in altri campi l'evento Afterupdate

    non funziona

    Funziona solo dalla Casella combinata dove l'origine dei dati deriva dal generatore di query al cui intero c'è la tabella dei contratti

Devi accedere o registrarti per scrivere nel forum
12 risposte