+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Pulsante con macro apri maschera con salvataggio in automatico del record

  1. #1
    Spaginato non è in linea Scolaretto
    Post
    113

    Pulsante con macro apri maschera con salvataggio in automatico del record

    Buongiorno a Tutti
    Avrei bisogno del Vostro aiuto per evitare che al click del Pulsante "scarica certificati" si salvasse il record in automatico.
    Mi spiego
    Ho la maschera "partite" nella quale ho inserito con autocomposizione un pulsante che mi apre la maschera "scarico1"
    Nella maschera "scarico!",affinchè mi riporti l'"IdCertificato", ho inserito "su caricamento" questo codice:
    codice:
    Private Sub Form_Load()
    Forms![SCARICO1].[IdCertrScar] = Forms![CERTIFICATI]![ID_CERT]
    End Sub
    Tutto "gira bene" la macro ed il codice fanno il loro dovere
    l'unico inconveniete è quello che se riapro nuovamente la maschera sullo stesso Id mi salva in automatico ...genera in automatico un nuovo record nella tabella "scarico"
    Vorrei che fossi io a decidere se salvare o meno il record
    Spero sia stato chiaro
    Ringrazio anticipatamente

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,143
    La tecnica che usi non va bene.
    Devi sfruttare il Parametro della Funzione OpenForm chiamato ARGS che valorizza la proprietà OpenArgs della Form chiamata.
    Su Load, se OpenArgs è valorizzato lo usi come deve essere usato, e di norma si sfrutta la proprietà DefaulValue non VALUE... proprio per evitare salvataggi involontari.
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  3. #3
    Spaginato non è in linea Scolaretto
    Post
    113
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    La tecnica che usi non va bene.
    Devi sfruttare il Parametro della Funzione OpenForm chiamato ARGS che valorizza la proprietà OpenArgs della Form chiamata.
    Su Load, se OpenArgs è valorizzato lo usi come deve essere usato, e di norma si sfrutta la proprietà DefaulValue non VALUE... proprio per evitare salvataggi involontari.
    Ciao Alex
    ti ringrazio per avermi risposto
    Purtroppo, causa la mia deficienza in VBA, ti chiedo se potresti spiegarmi meglio (non che tu non lo abbia fatto per uno esperto).... ovvero in parole semplici per me povero mortale
    Non ho capito
    Scusami e grazie ancora

  4. #4
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,143
    Quote Originariamente inviato da Spaginato Visualizza il messaggio
    Ciao Alex
    ti ringrazio per avermi risposto
    Purtroppo, causa la mia deficienza in VBA, ti chiedo se potresti spiegarmi meglio (non che tu non lo abbia fatto per uno esperto).... ovvero in parole semplici per me povero mortale
    Non ho capito
    Scusami e grazie ancora
    Premesso che siamo in un Forum tecnico, quindi l'onere di dotarsi degli strumenti di comprenssione spetta a te...!

    I concetti sono 2:
    1° Non si innescano RIFERIMENTI tra Form in modo vincolante, questa è BUONA TECNICA per la riutilizzabilità degli Oggetti.
    Quindi nel tuo caso inserendo dei riferimenti ESPLICITI alla Form di reperimento del Valore, rendi RIGIDO e VINCOLATO quel legame.
    Non potrai aprire la 2° Form se non aperta la 1° ad esempio...

    2° Quando un Controllo deve assumere valori Predefiti, soprattutto se da gestire su NEWRECORD si utilizza la proprietà DefaultValue, e non Value... al fine di consolidare/gestire/validare il valore su Evento di Form.
    Perchè se gestisci bene il NewRecord, poi non dovrai andare a modificare quel Valore... ma magari solo cercarlo...
    Se l'esigenza è altra, rianalizza meglio perchè qualche cosa stride... se i Records sono già Inseriti...!

    Unendo questi 2 concetti... si arriva alla soluzione che ti ho esposto e che trovi BEN SPIEGATA anche:
    https://msdn.microsoft.com/VBA/Acces...-method-access
    codice:
    A string expression. This expression is used to set the form's OpenArgs property.
    This setting can then be used by code in a form module, such as the Open event procedure.
    The OpenArgs property can also be referred to in macros and expressions.
    For example, suppose that the form you open is a continuous-form list of clients.
    If you want the focus to move to a specific client record when the form opens, you can specify the client name with the OpenArgs argument, and then use the FindRecord method to move the focus to the record for the client with the specified name.
    Tu quindi valorizzi OpenArgs su OpenForm, quindi su LOAD della 2° leggi la proprietà indicata nella guida e la assegni alla proprietà DefaultValue con le opportune correzioni sintattiche.
    Nel caso io abbia compreso, ricorda che l'apertura delle Maschere avviene anche con modalità Predefinite, e, se devi assegnare un Record figlio(lato M) ad un Record Padre(lato 1) è bene aprire la Maschera in modalità [acFormAdd] da passare al parametro DataMode.
    Se dovrai Editare si userà [acFormEdit] e si sfrutterà la WhereCondition per filtrare...
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  5. #5
    Spaginato non è in linea Scolaretto
    Post
    113
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Premesso che siamo in un Forum tecnico, quindi l'onere di dotarsi degli strumenti di comprenssione spetta a te...!

    ...
    Grazie Alex
    vedo un po come fare seguendo i tuoi consigli
    Ultima modifica di AntonioG; 17-07-2017 14:18  Motivo: Inutile quotare tutto ...

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi