Newsgroup: it.comp.appl.access
Titolo: Evidenzia Records

Un saluto a tutti,
ho scaricatoto dal sito di Alessandro Baraldi la FAQ numero 26: 
Evidenzia Records, Colonne o Range di celle in viste tabellari (UPD), 
da cui ho prelevato quella che mi interessava e cioè Evidenzia Records 
(versione 2K ed Evidenzia1).
Io ho una maschera continua in cui tramite query mi vengono elencate 
una serie di utenti. Io volerrei evidenziare tutto un record appena 
viene selezionato.
La FAQ n°26 funziona in modo alterno, non capisco il perchè ma se 
apporto delle modifiche alla applicazione non funziona più.
Mi dispiace per le poche informazioni sulle cause del mancato 
funzionamento, ma purtroppo il comportamento anomalo non mi aiuta.
Codice:
'Autore: Silvio Savoldi
'
silvio....@libero.it
Option Compare Database
Option Explicit
'*****
'Nel caso i records da evidenziare si trovassero in una Sottomaschera
'si passerà il parametro Form dall'evento "Corrente" della SubForm
'con la sintassi: Forms!<NomeFormPrincipale>!<NomeCorniceSubForm>.Form
'*****
'*****
'E' possibile passare valori multicampo connessi con "&"
'Evidenzia("[Campo1] & [Campo2]", [Campo1] & [Campo2], <OggettoForm>)
'*****
'*****
'Distribuire l'applicazione in modalità P-Compilata (MDE).
'Diversamente Access potrebbe salvare nelle strutture delle Forms i 
criteri condizionali
'creati a Runtime.
'*****
Public Function Evidenzia(ByVal NomeChiave As String, ByVal ValChiave 
As Variant, ByRef Frm As Form)
   On Error GoTo GestErr
  'If <OpzioneGlobale> = True Then
        Dim NumFormat As Byte
        With Frm
             'conviene bloccare agg. schermo se Foglio Dati
             If .DefaultView = 2 Then Application.Echo False
             'Crea a Runtime criterio format. condiz. per controlli 
Combo e TextBox
             If IsNull(!Txtevidenzia) Then
                   '
                   Dim Ctr As Control
                   For Each Ctr In .Section(0).Controls  'Sezione Corpo
                        If Ctr.ControlType = acTextBox Or 
Ctr.ControlType = acComboBox Then
                               '
                               Ctr.FormatConditions.Add acExpression, , 
"[txtEvidenzia]" & "=" & NomeChiave
                               NumFormat = Ctr.FormatConditions.Count - 
1
 
Ctr.FormatConditions(NumFormat).ForeColor = vbWhite
 
Ctr.FormatConditions(NumFormat).BackColor = vbRed
                        End If
                   Next Ctr
                   Set Ctr = Nothing
             End If
             If Not Frm.NewRecord Then !Txtevidenzia.Value = ValChiave
             If .DefaultView = 2 Then Application.Echo True
        End With
 'End If
  Exit Function
GestErr:
  If Err <> 2113 And Err <> 2465 And Err <> 7966 Then
       MsgBox Err.Number & " " & Err.Description
  End If
End Function
'** Err 2113  e  2465   nel caso l'evento "Corrente" venga eseguito 
prima che sia
'stata assegnata un'origine dati alla Form (in certe maschere, per 
esigenze di programmazione,
'viene assegnato dinamicamente il RecordSource)
'** Err 7966   limite criteri (tre) di Formattaz. Condizionale 
assegnabili al controllo

 funzionamento, ma purtroppo il comportamento anomalo non mi aiuta.
Per funzionare funziona, ma come ti consiglia l'autore devi tener conto che
Access tende a salvare automaticamente nel design della Form i formati
condizionali.
Ti conviene abilitare per ultima l'evidenziazione del Record, prima di
creare il .MDE.
Saluti

 creare il .MDE.
Potresti cortesemente essere più chiaro?
L'estensione del mio db è mdb per quale motivo dovrei convertirlo in 
mde?

"Guriuz"


Probabilmente sono state memorizzate nel design dei controlli tre condizioni
(tutte uguali) ... toglile.
Creare successivamente l'MDE è necessario per avere applicazioni
funzionanti: troppi i problemi in formato standard.
Saluti.

 funzionanti: troppi i problemi in formato standard.
Ok grazie.

 Cosa intendi per "design" dei controlli?
Se accedi al Design della maschera e ti posizioni su uno di quei controlli,
dovresti rilevare che Access ha automaticamente memorizzato tre impostazioni
nella scheda "Formattazione condizionale".
In tal caso toglile.
Saluti.

 Saluti.
Grazie.