Utilizzare campo per aggiungere la descrizione modifiche

di il
5 risposte

Utilizzare campo per aggiungere la descrizione modifiche

Buongiorno, stavo integrando un DB realizzato da altri, adattandolo alle mie esigenze di lavoro.
Ho sviluppato una maschera da una query (QCercaErr_inBB) che interroga la tabella BB secondo criteri impostati.
In questa maschera (QCercaErr_inBB) sono presenti una decina di caselle di testo tutte in grado di modificare i dati eventualmente riscontrati dall'operatore come errati. Nella tabella BB (ma anche nella query e nella maschera) è appositamente previsto un campo denominato BB.DescrErrore . Qui devono essere memorizzate , per ogni afterupdate del controllo BB.Nome_RagSociale, le seguenti info: data della modifica, ed il vecchio valore presente nel campo modificato.

A tal fine il codice vba (già utilizzato nel Db) che io che ho adattato perla nuova maschera ( funziona) è:
Private Sub BB_Nome_RagSociale_Click()
Me.BB_DescrErrore = Me.BB_DescrErrore & RegistraModifiche("BB_Nome_RagSociale", Me.BB_Nome_RagSociale.OldValue, Me.BB_Nome_RagSociale.Value)
End Sub
ovviamente si appoggia ad un modulo già integrato nel DB dove è presente l'istruzione RegistraModifiche
Function RegistraModifiche(ByVal myFieldName As String, ByVal myFieldOldValue As Variant, ByVal myFieldNewValue As Variant) As String
RegistraModifiche = ""
RegistraModifiche = ">>" & Date & "<< [" & Trim(myFieldName) & "] era <" & Trim(myFieldOldValue) & ">; "
End Function
a questo punto dovrei proseguire scrivendo le istruzioni per ogni alto campo modificabile nella maschera e vorrei evitare di ripetere questo inserimento tante volte, anche perchè dovrei farlo per almeno altre 10 tabelle filtrate da query.

pensavo di utilizzare qualcosa del genere che, ovviamente, mi rendo conto essere totalmente sbagliata, ma mi serve per esprimere l'idea che vorrei utilizzare per semplificare in un unica istruzione :ogni modifica eseguita sui vari controlli va memorizzata nel campo di testo BB-DescrErrore
Private Sub Form_AfterUpdate()
Dim ctrl As Object
For Each ctrl In Me
If ctrl.Value <> ctrl.OldValue Then
Me.BB_DescrErrore = Me.BB_DescrErrore & RegistraModifiche("ctrl", ctrl.OldValue, ctrl.Value)
End Sub
anticipatamente ringrazio per i suggerimenti e delle spiegazioni sui miei errori dovuti ad un volgarissimo copia e incolla

5 Risposte

  • Re: Utilizzare campo per aggiungere la descrizione modifiche

    Hai sbagliato Evento... se confronti il Value e OldValue su AftyerUpdate non possono essere diversi e non rileverai MAI le differeinze.
    Devi usare BeforeUpdate...
    
    If Me.Dirty then
       For each ctl in Me.Controls
          If ctl.Value<>ctl.oldValue then
             .... 
          End If
       Next
    End if
  • Re: Utilizzare campo per aggiungere la descrizione modifiche

    Ti ringrazio ma sto uscendo, come rientro faccio le prove ti faccio sapere
  • Re: Utilizzare campo per aggiungere la descrizione modifiche

    Ho provato ad inserire queste istruzioni ma qualcosa non fa andare avanti
    Private Sub Form_Dirty(Cancel As Integer)
    Dim ctl As Object
    If Me.Dirty Then
    For Each ctl In Me.Controls
    If ctl.Value <> ctl.OldValue Then
    Me.BB_DescrErrore = Me.BB_DescrErrore & RegistraModifiche("ctl", ctl.OldValue, ctl.Value)
    End If
    Next
    End If
    End Sub
    ad ogni tentativo di immissione nei vari campi si visualizza una finestra L'espressione in attesa immessa come impostazione delle proprietà di evento ha generato l'errore seguente: non valido all'esterno di una routine. la guida aggiunge poi queste info: Questo errore si verifica in seguito a un problema di esecuzione di un evento, perché non è possibile individuare la posizione della logica per l'evento. Ad esempio se la proprietà Su apertura di una maschera è impostata su =[Campo], questo errore si verifica perché è previsto il nome di una macro o un evento da eseguire quando si verifica l'evento.
  • Re: Utilizzare campo per aggiungere la descrizione modifiche

    Tra l'altro ragionavo che, al fine di non riempire eccessivamente di caratteri il campo BB._DescrErrore sarebbe ancora meglio (sempre che non fosse troppo complicato o improponibile), e mi riferisco ad una ipotesi di dover correggere ad esempio 4 differenti errori riscontrati su 4 campi diversi dello stesso record, riuscire ad riportare nell'info da memorizzare la data della modifica (una sola volta) ed i 4 valori precedenti al cambiamento. Solo nel caso di un improbabile successivo intervento integrato un'altro giorno, allora si dovrebbe aggiungere l'ulteriore data ed il valore del campo prima della recente modifica.
  • Re: Utilizzare campo per aggiungere la descrizione modifiche

    Non sono ancora riuscito nel mio intento di risparmiare codice vba nel dover dare istruzioni per aggiungere e memorizzare info (data della modifica, ed il vecchio valore presente nel campo modificato a seguito di eventi afterupdate dei vari controlli (nel mio caso caselle di testo cn dati correlati ad una query). Ribadisco che non riuscendo nell'intento mi vedo costretto a ripetere il codice controllo per controllo e devo lavorare su 8 maschere , ognuna delle quali ha il suo campo DecrErrore da correlare con almeno 15 caselle di testo della stessa finestra che possono subire modifiche dall'operatore. E' gradito un consiglio per giungere alla soluzione, con l'occasione faccio gli auguri a tutti.
Devi accedere o registrarti per scrivere nel forum
5 risposte