Newsgroup: it.comp.appl.access
Titolo: Trova duplicato

io (Franco dellavalle Modifica) 	
15:21 (37 minuti fa)
ciao a tutti
 
non riesco a spiegarmi perchè la prima, funziona meglio della seconda.
 
If Not IsNull(DLookup("NumeroDocFo", "Qry_numTestataFatturaFornitore", "IdFornitore =" _
  & Forms!M_FatturaFornitore!LstFornitore & " And " & "IdTipoDocumento =" _
  & Me!CboTipoDocumento & " And " & "NumeroDocFo =" & Chr$(34) & Me!NumeroDocFo & Chr$(34))) Then
  MsgBox "ATTENZIONE: " & Me!CboTipoDocumento.Column(1) & " " _
  & Me!NumeroDocFo & " già presente.", vbExclamation, "Duplicato!"
 
End If
 
 
If Not IsNull(DLookup("NumeroDocFo", "Qry_numTestataFatturaFornitore", "IdFornitore =" _
  & Forms!M_FatturaFornitore!LstFornitore & " And " & "IdTipoDocumento =" _
  & Me!CboTipoDocumento & " And  NumeroDocFo =" & Chr$(34) & Me!NumeroDocFo _
  & Chr$(34))) And Me!NumeroDocFo <> Nz(Me!NumeroDocFo.OldValue) Then
  MsgBox "ATTENZIONE: " & Me!CboTipoDocumento.Column(1) & " " _
  & Me!NumeroDocFo & " già presente.", vbExclamation, "Duplicato!"
 
End If
 
grazie.

 non riesco a spiegarmi perchè la prima, funziona meglio della seconda.
 
CUT
 
La seconda contiene in più questa parte:
 
...
And Me!NumeroDocFo <> Nz(Me!NumeroDocFo.OldValue) ...
 
Che io comunque scriverei così:
 
And (Me!NumeroDocFo <> Nz(Me!NumeroDocFo.OldValue)) ...
 
Ciao


ciao Davide e grazie
però, il primo codice, posso scriverlo sia sul controllo
CboTipoDocumento che NumeroDocFo, 
mentre il secondo codice, se voglio scriverlo su CboTipoDocumento
devo modificarlo cosi'
 
If Not IsNull(DLookup("NumeroDocFo", "Qry_numTestataFatturaFornitore", "IdFornitore =" _
  & Forms!M_FatturaFornitore!LstFornitore & " And " & "IdTipoDocumento =" _
  & Me!CboTipoDocumento & " And  NumeroDocFo =" & Chr$(34) & Me!NumeroDocFo _
  & Chr$(34))) And (Me!CboTipoDocumento <> Nz(Me!CboTipoDocumento.OldValue)) Then
  MsgBox "ATTENZIONE: " & Me!CboTipoDocumento.Column(1) & " " _
  & Me!NumeroDocFo & " già presente.", vbExclamation, "Duplicato!" 
 
 
giusto?

 giusto?
 
Nel senso descritto sopra: Sì
 
Le parentesi sono logicamente superflue perché usi sempre e solo 
l'operatore And.
 
 
 

 ...
 
e ha dimenticato di includere la solita segnatura con tutta la 
pubblicità. ;-)
 
-- 
Ciao
Karl
*********
http://www.AccessDevCon.com
 
Access FAQ: 
http://www.donkarl.com/it
 
 
 
 


grazie Karl


pero', ho notato, che se inserisco su
Sub CboTipoDocumento_BeforeUpdate 
 
If Not IsNull(DLookup("NumeroDocFo", "Qry_numTestataFatturaFornitore", "IdFornitore =" _
  & Forms!M_FatturaFornitore!LstFornitore & " And " & "IdTipoDocumento =" _
  & Me!CboTipoDocumento & " And  NumeroDocFo =" & Chr$(34) & Me!NumeroDocFo _
  & Chr$(34))) And Me!CboTipoDocumento <> Nz(Me!CboTipoDocumento.OldValue) Then
    MsgBox "ATTENZIONE: " & Me!CboTipoDocumento.Column(1) & " " _
      & Me!NumeroDocFo & " già presente.", vbExclamation, "Duplicato!"
 
End If
 
non sempre mi da il msgbox ecc. ecc.
mentre con questo sembra andare meglio
 
If Not IsNull(DLookup("NumeroDocFo", "Qry_numTestataFatturaFornitore", "IdFornitore =" _
  & Forms!M_FatturaFornitore!LstFornitore & " And " & "IdTipoDocumento =" _
  & Me!CboTipoDocumento & " And " & "NumeroDocFo =" & Chr$(34) & Me!NumeroDocFo & Chr$(34))) Then
     MsgBox "ATTENZIONE: " & Me!CboTipoDocumento.Column(1) & " " _
       & Me!NumeroDocFo & " già presente.", vbExclamation, "Duplicato!"
 
End If


Non hai messo le parentesi che suggerivo.
 
Rendi esplicita la precedenza del confronto rispetto all'istruzione and e riprova.
 
Ciao


ok grazie Davide