Newsgroup: it.comp.appl.access
Titolo: problema nell'utilizzo della formattazione condizionale

ciao a tutti
volevo utilizzare questo codice nella formattazione condizionale
 
If Not IsNull(Dlookup("MioCampo", "MiaTabella", _
    "MioCampo = " & Chr$(34) & Me!MioControllo & Chr$(34))) _
    And Me!MioControllo <> nz(Me!MioControllo.OldValue) Then
 
  MsgBox Me!MioControllo & " Già esiste.", vbOKOnly, "Duplicato!"
  Cancel = True
 
End If
 
ho provato con:
Not IsNull(Dlookup("MioCampo"; "MiaTabella";"MioCampo = " & Chr$(34) & Me!MioControllo & Chr$(34))) And Me!MioControllo <> nz(Me!MioControllo.OldValue) 
 
grazie.

Salve,
 
Francodellavalle28 ha scritto:

Se capisco bene hai provato quest'espressione nel dialogo della FC.
Non è una buona idea perché il codice è inteso per il momento dopo un 
aggiornamento in un controllo di un solo record. La FC funziona molto 
diversamente.
 
Se assolutamente vuoi farlo sarebbe al massimo sensato per una maschera 
singola con 1 solo record perché la FC sempre coinvolge tutti record di 
una maschera e tanti DLookup inutili quanti record ci sono -1 non siano 
buono per la prestazione.
 
In riguardo alla sintassi devi cancellare "Me!" perché è qc. che solo 
esiste nel codice VBA.
 
Per il prossimo messaggio sarebbe meglio di scrivere la tua vera 
espressione (per vedere problemi con nomi di oggetti ecc.) e cosa succede.
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
Access Lobby: 
http://www.AccessDevelopers.org
 


ciao Karl
 
ho fatto in questo modo
 
in prima di aggiornare, del controllo "Email" ho inserito:
 
    If Not IsNull(DLookup("Email", "TbEmail", _
    "Email = " & Chr$(34) & Me!Email & Chr$(34))) _
    And Me!Email <> Nz(Me!Email.OldValue) Then
        MsgBox Me!Email & " Già esiste.", vbOKOnly, "Duplicato!"
    End If
 
poi ho creato una query "TovaDuplicatiEmail":
SELECT TbEmail.Email
FROM TbEmail
GROUP BY TbEmail.Email
HAVING (((TbEmail.Email) In (SELECT [Email]  FROM [TbEmail] As Tmp GROUP BY [Email] HAVING Count(*)>1) And (TbEmail.Email)=[Forms]![M_Gestione]![SM_Email].[Form]![Email]));
 
in espreaaione di FC:
Not IsNull(DLookUp("Email";"TovaDuplicatiEmail"))
 
Cosa ne pensi?
grazie
 
 
 
 

 Cosa ne pensi?
 
Mi sembra orribile. Non cambia niente in riguardo ai problemi con la FC, 
DLookup, Timing ecc. che ho provato di descrivere.
 
È difficile consigliarti qc. se solo mostri cosa fai ma non descrivi la 
situazione e cosa vuoi ottenere. p.e. quale tipo di maschera usi - 
singola o continua, cosa vuoi che succede quando e per quale tempo ecc. 
Poi si potrebbe discutere soluzioni.



ciao Karl
 
la sottomaschera è a Maschere continue
e vorrei oltre al messaggio:
MsgBox Me!Email & " Già esiste.", vbOKOnly, "Duplicato!"
 
segnalare in rosso con FC eventuali
email già esistenti 

 email già esistenti
 
Funziona come lo descrivi sopra o no?
 
Se no prova di rendere la query più semplice e veloce:
 
SELECT Email
FROM TbEmail
GROUP BY Email
HAVING Count(Email)>1
 
Poi nel dialogo della FC prova con
 
Il valore del campo è  uguale a
 
DLookUp("Email";"TovaDuplicatiEmail";"Email='" & [Email] & "'")
 
Speriamo che non è troppo lento.


 Speriamo che non è troppo lento.
 
ma il tuo è molto piu' veloce
grazie Karl


ciao Karl
ora però ho il problema che per colorare anche l'email duplicata,
devo inserire in dopo aggiornamento un me.recalc
e cosi' facendo, mi si aggiorna anche l'ordinamento dell'email;
che io vorrei che avvenisse in una secondo momento.


 
"dopo aggiornamento" del controllo o del record?
Dove hai impostato l'ordinamento?
 
Ho provato di riprodurrlo ma qui un recalc non cambia l'ordinamento dei 
record.
 
Hai già provato altri metodi come Me.Refresh?


 Hai già provato altri metodi come Me.Refresh?
 
ho provato con refresh,
ma si colora solo se l'email è visibile altrimenti no!
cioè se l'email e' sopra la barra di scorrimento verticale
il refresh non ha effetto
 
 
 
 
 


Ciao Karl
di male in peggio
dopo aver provato refresh in dopo aggiornamento
e dopo conferma eliminazione del record
ho avuto quest'errore:
 
AppName: msaccess.exe      AppVer: 11.0.8321.0     AppStamp:4b4f9cfd
ModName: msjtes40.dll      ModVer: 4.0.9502.0      ModStamp:44859905
fDebug: 0       Offset: 000073d9


è il recalc che crea quest'errore