Aggiornare casella combinata alla chiusura di altra maschera

di il
7 risposte

Aggiornare casella combinata alla chiusura di altra maschera

Ciao a tutti,
Ho una maschera(MIncarico) realizzata sulla tabella Incarico con una casella combinata che pesca i dati dalla tabella impiegati.
Se l'impiegato non è nell'elenco faccio aprire, con un pulsante, la maschera MImpiegati per inserire il nuovo impiegato.
Quando chiudo la maschera MImpiegati naturalmente non compare il nuovo nominativo nell'elenco della casella combinata.
Vorrei che alla chiusura della maschera MImpiegati si aggiornasse la casella combinata.
Lo riesco a fare con VBA, ma per mia curiosità come si fa con le macro incorporate?
Credo che ciò che debba fare sia l'azione Rieseguiquery della casella combinata, ma dove e come?(Sempre se ho supposto bene)
Grazie per qualunque aiuto

7 Risposte

  • Re: Aggiornare casella combinata alla chiusura di altra maschera

    Argomento Trattato molte volte...
    Devi aprire la 2° maschera in modalità SINCRONA ovvero impostando il parametro acDialog...in questo modo il codice vien e sospeso lato caller per riprendere alla chiusura.
    Quindi basta mettere il Requery della combo subito dopo OPENFORM eseguito come detto sopra.
  • Re: Aggiornare casella combinata alla chiusura di altra maschera

    Leggi qui per approcciare l'argomento in entrambi i modi

    Nel documento leggi lo Scenario 1 considerando che:
    A=Impiegati
    B=Incarichi
  • Re: Aggiornare casella combinata alla chiusura di altra maschera

    Grazie ad entrambi.
    Ho provato quello indicato da Alex ma non funziona il Rieseguiquery sull'evento Su aperture, anche perchè la maschera era gia aperta, quindi non va in esecuzione questo evento.
    Quello indicato da Osvaldo invece lo avevo già provato con la sola differenza che non avevo impstato sull'azione Apri Maschera la proprietà Modalità finestra: Dialogo ma Normale.
    Mi spiegate gentilemnte perchè con Modalità Finestra: Dialogo funziona?
  • Re: Aggiornare casella combinata alla chiusura di altra maschera

    antcru ha scritto:


    Grazie ad entrambi.
    Ho provato quello indicato da Alex ma non funziona il Rieseguiquery sull'evento Su aperture, anche perchè la maschera era gia aperta, quindi non va in esecuzione questo evento.
    Quello indicato da Osvaldo invece lo avevo già provato con la sola differenza che non avevo impstato sull'azione Apri Maschera la proprietà Modalità finestra: Dialogo ma Normale.
    Mi spiegate gentilemnte perchè con Modalità Finestra: Dialogo funziona?
    A parte il fatto che usi le macro... e questo è un pessimo punto di partenza, sei certo di aver capito...?
    Ti rispondo, NO, il RieseguiQuery va inserito dopo l'azione ApriMaschera in modalità Dialogo... ma deve agire sul controllo combobox... e forse con le macro si complica.

    I metodi funzionano entrambi, ma quello che opera con NotInList è utile solo per le combo basatevsu tabelle con 2 campi ID e descrittivo... per gli altri casi è da evitare.
  • Re: Aggiornare casella combinata alla chiusura di altra maschera

    Potrei dire qualche sciocchezza, ma rispondo in base a tanti tentativi fatti in passato e in base a quello che ci ho capito io su acDialog.
    Premesso che NotInList è gestibile solo in VBA, i manuali consigliano di usare acDialog.
    Quando la casella combinata chiama OpenForm "MImpiegati" --->acDialog, il proprio codice VBA (quello della casella combinata), proprio perché chiede di "dialogare" con MImpiegati, si ferma. E non andrà mai avanti finchè non chiudi TU utente la maschera MImpiegati.
    Secondo quello che ci ho capito io, utilizzando acDialog si ritiene "implicito" che poi (prima o poi) l'utente va a chiudere la maschera MImpiegati proprio perché gli serve solo per "quell'attimo di dialogo". L' "implicito" di cui parlo sarebbe l'evento chiusura (cliccando sulla X) della maschera MImpiegati. In questo modo il Requery appare sotto il codice della casella combinata ed è possibile non scomodare con ulteriore codice la maschera MImpiegati.
    Ora, se si ritiene che questo "atteggiamento/comportamento" sia da ritenersi implicito/tacito/non dispendioso di codice VBA...lo sai, quindi OK.

    Nel documento che ho linkato preferisco usare un pulsante per aprire la maschera MImpiegati e poi un pulsante su MImpiegati che provvede lui a fare il Requery sulla casella combinata. In questo modo separo le due operazioni su due oggetti diversi, quindi due codici (o azioni macro).
    Se usi quest'ultima strategia puoi lavorare sia con acDialog, sia acNormal.
  • Re: Aggiornare casella combinata alla chiusura di altra maschera

    @Alex ha scritto:


    A parte il fatto che usi le macro... e questo è un pessimo punto di partenza, sei certo di aver capito...?
    Immagino che le macro siano un pessimo punto di partenza, ma sto cercando di capire come funzionano anche le macro, il vba qualcosa, e dico qualcosa, l'ho capita

    @Alex ha scritto:


    Ti rispondo, NO, il RieseguiQuery va inserito dopo l'azione ApriMaschera in modalità Dialogo...
    Cmq è vero, non avevo capito che andasse dopo ApriMaschera.

    OsvaldoLaviosa ha scritto:


    Potrei dire qualche sciocchezza, ma rispondo in base a tanti tentativi fatti in passato e in base a quello che ci ho capito io su acDialog.
    Grazie, adesso qualcosa mi è più chiaro.

    Grazie ancora a entrambi

    Vi chiedo un'altra cosa(non se se devo aprire però un altro post)
    Con le macro si può richiedere che in una textbox vengano solo inseriti valori numeri? E nel caso si digitasse un carattere si cancellerebbe
    Cioè come si fa con una macro a fare quello che in VBA farei così

    Private Sub CasellaTesto_KeyPress(KeyAscii As Integer
    If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
    KeyAscii = 0
    Beep
    End If
    End sub
  • Re: Aggiornare casella combinata alla chiusura di altra maschera

    Serve aprire un nuovo 3D(Sicuro serva del codice...?)
Devi accedere o registrarti per scrivere nel forum
7 risposte