Confrontare proprietà oggetti simili

di il
3 risposte

Confrontare proprietà oggetti simili

Mi capita sempre più spesso di creare ad es. maschera/sottomaschera con procedura guidata e tutto funziona. Poi, con il passare del tempo, mi piace aggiungere pulsanti, colorarla diversamente, andare a toccare proprietà di controlli. Alla lunga rischio di accorgermi che il meccanismo maschera/sottomaschera non funziona più. Non sono più in grado di capire dov'è il difetto, ma vorrei salvare tutte le modifiche estetiche e quello di buono che mi resta. Mi accorgo che, se riparto da zero a creare con procedura guidata, il tutto ritorna normale, ma mi secca dover copiare/incollare uno per uno tutti gli oggetti dalla maschera difettosa in quella corretta.
Esisterebbe un espediente per mettere a confronto tutte le proprietà delle due maschere e capirne le differenze, in modo da correggere solo i difetti della maschera difettosa?

3 Risposte

  • Re: Confrontare proprietà oggetti simili

    Ci sono dei Tools ma non sono FREE..., leggi questo:

    Sinceramente non capisco cosa possa accadere che guasta il funzionamento...

    Detta così tuttavia si potrebbe anche scrivere una procedura in VBA( ), e se riesci a farla con le MACRO ti pago la pizza, per ciclare tutti i componenti delle Maschere e stampare un LOG con le differenze.
    Questa funzione andrebbe scritta in modo da essere RICORSIVA così che possa analizzare anche le SUBFORM.
    Ovviamente una delle 2 Maschere deve essere la MASTER.

    Dimmi se la cosa ti interessa posso abozzarti la strategia del codice...
    Questo è un'esempio che puoi Facilmente testare
    
    Function CheckProperties(NomeForm As String)
        On Error Resume Next
        Dim ctl         As Access.Control
        Dim intCount    As Integer
        DoCmd.OpenForm NomeForm, , , , , acHidden
        For Each ctl In Forms(NomeForm).Controls
            For intCount = 0 To ctl.Properties.Count
                Debug.Print ctl.Properties(intCount).Name; " = " & ctl.Properties(intCount).Value
            Next
        Next
        DoCmd.Close acForm, NomeForm
    End Function
    la chiami così aprendo il VBEditor ed aprendo con CTRL+G la finestra Immediata e digitando nella Finestra sotto questo
    
    ?CheckProperties("NomeMaschera")
    se premi invio vedrai nella finestra stessa elencarsi Nome Proprietà e Valore per ogni controllo...
    La finestra ha un Numero di RIGHE limitato pertanto poi perderai i primi... motivo per il quale è meglio un LOG, ma se STAMPI solo le differenze, non dovresti avere molte righe...!

    Questa funzione così come è scritta non è ricorsiva... ma è semplice modificarla in modo che se un Controllo della Form fosse una SubForm l'analisi sia Automatica.

    Chiaramente visto che si parla di CONFRONTO dovrai aprire 2 Maschere, ma usare solo il CICLO della MASTER per puntare alla 2°...
  • Re: Confrontare proprietà oggetti simili

    Non ci capisco niente. Non importa Alex. Nel frattempo ho fatto prima alla vecchia maniera copia/incolla.
  • Re: Confrontare proprietà oggetti simili

    Hehehehe... vabbè quando avrai voglia di studiare il VBA... ne riparleremo, eppure mi pareva veramente semplicissimo...
Devi accedere o registrarti per scrivere nel forum
3 risposte