Maschera continua confrontare campo con il precedente

di il
3 risposte

Maschera continua confrontare campo con il precedente

Buongiorno a tutti,
avrei questo problema:

in una maschera continua
vorrei visualizzare una barra che mi suddivida graficamente i dati
se il valore di un campo cambia rispetto allo stesso valore del campo riferito al record successivo

quindi se cambia quel dato vorrei visualizzare la barra, se no no

le prove che sto facendo sono sull'evento current della maschera
Private Sub Form_Current()
Dim rec_clone As Recordset
Set rec_clone = Me.RecordsetClone
rec_clone.MoveNext
    
Dim var_valoreprec As String
Dim var_valoreattuale As String
    
var_valoreprec = rec_clone.BIMBO
var_valoreattuale = Me.BIMBO
 
If var_valoreattuale = var_valoreprec Then
    BARRA.Visible = False
Else
    BARRA.Visible = True
End If

End sub

3 Risposte

  • Re: Maschera continua confrontare campo con il precedente

    Non capisco cosa sia la BARRA di cui parli...

    La cosa fondamentale è che in una Maschera continua non si può ragionare come si potrebbe fare su una Maschera singola...
    Quindi NON puoi gestire la proprietà VISIBLE di un Controllo su Current, questo si riflette su tutti i controlli dei Records... proprio per come funziona la Maschera continua...!
    Se rifletti infatti in modalità STRUTTURA, non ci sono tanti controlli quanti i Records, ma solo 1 Controllo per ogni Campo... quindi agendo su quello è evidente sia applicato a tutti i recods.

    L'unica possibilità è gestire in modo intelligente la Formattazione Condizionale conla quale si può fare quasi tutto.
    Nel tuo caso, imposti la Formattazione condizionale in modo tale che richiamando una Funzione questa restituisca TRUE/FALSE per soddisfare il controllo.
    Questa funzione devi scriverla in un modulo Public, ma devi passare un parametro che le consenta di andare a ricavare il Record (precedente/successivo in base alla tua esigenza)... questo parametro dovrebbe essere la ChiavePrimaria.
    Quindi imposterai come condizione di Formattazione [L'espressione è] poi affianco richiami la Funzione che hai scritto passando come Parametro il Controllo contenente la PK...
    NomeFunzione( [ControlloIdPK])
    Applicando il tutto genererà quello che pensi sia da visualizzare... serve anche un poco di fantasia...

    In ogni caso commentando il tuo codice:
    Parli di record Precedente ma esegui un MoveNext...?
    Se esegui un MoveNext/MovePrevious, serve verificare sempre EOF e/o BOF per non commettere errori...
  • Re: Maschera continua confrontare campo con il precedente

    Grazie mille Alex, esaustivo come sempre,
    stasera ho materiale per lavorare sulla formattazione condizionale

    per barra intendevo una linea

    chiedo scusa per il refuso tra movenext e record precedente,

    ciao e buona continuazione di anno
  • Re: Maschera continua confrontare campo con il precedente

    In questi casi puoi optare per i caratteri grafici dati dai Font speciali, ovvero usare una TextBox formattata con Font="Wingdings" ed inserire come carattere predefinito "n", rendi il Font dello stesso colore dello sfondo, mentre con la FC lo rendi Rosso/Nero o come vuoi...
Devi accedere o registrarti per scrivere nel forum
3 risposte