Newsgroup: it.comp.appl.access
Titolo: Problema con controllo di duplicazione su numero progressivo

Buona sera a tutti,
premetto di avere un DB strutturato su due tabelle
collegate in relazione uno-a-molti, ovvero:
1) tabella: tblSpecialita
    IdAnno (chiave)
    Anno
2) tabella: tblCoord
    IdCoord (chiave)
    NumProt
    Coord
    Ufficio
    IdAnno
    ..........
Nell'evento "prima di aggiornare" del campo "numprot" (contatore che
incremento nel momento in cui inserisco un nuovo atto" ho inserito il
seguente codice per la verifica che un'eventuale valore diverso
dall'incrementale automatico, non sia riferito ad un valore già
presente nel DB:
    If Not IsNull(DLookup("NumCoord", "tblCoord", "NumCoord = " & Str
(Me!NumCoord))) And Me!NumCoord <> Nz(Me!NumCoord.OldValue) Then
    MsgBox "Progressivo " & Me!NumCoord & " già impegnato.", vbOKOnly,
"Duplicato ... !!!"
    Cancel = True
    End If
Il problema è che, ovviamente, se inserisco un valore basso, magari
per intrudurre nuovamente un documento già cancellato, mi compare il
messaggio di progressivo già impegnato perché il DLookup lo fa su
tutto il DB e non scriminandolo per Anno di riferimento(quindi quel
valore è verosimilmente presente anche in altre annualità) ... per non
tediarvi ulteriormente avrei bisogno di modificar la predetta ruoitine
associando il controllo del dcampo duplkicato al solo anno di
riferimento ... ho tentato e ritentato ma persi la retta via ...
Come risolvere ??? ... Grazie per la solita pazienza e cortesia ...
Francesco

 ha scritto nel messaggio 
news:91fd5cce-0e4e-4a14...@c18g2000prh.googlegroups.com...
Buona sera a tutti,
premetto di avere un DB strutturato su due tabelle
collegate in relazione uno-a-molti, ovvero:
1) tabella: tblSpecialita
    IdAnno (chiave)
    Anno
2) tabella: tblCoord
    IdCoord (chiave)
    NumProt
    Coord
    Ufficio
    IdAnno
    ..........
Nell'evento "prima di aggiornare" del campo "numprot" (contatore che
incremento nel momento in cui inserisco un nuovo atto" ho inserito il
seguente codice per la verifica che un'eventuale valore diverso
dall'incrementale automatico, non sia riferito ad un valore gi�
presente nel DB:
    If Not IsNull(DLookup("NumCoord", "tblCoord", "NumCoord = " & Str
(Me!NumCoord) &" and year(CampoCheContieneLaData) = "& 
Me!ControlloAnnoDiRiferimento)) And Me!NumCoord <> Nz(Me!NumCoord.OldValue) 
Then
    MsgBox "Progressivo " & Me!NumCoord & " gi� impegnato.", vbOKOnly,
"Duplicato ... !!!"
    Cancel = True
    End If
Il problema � che, ovviamente, se inserisco un valore basso, magari
per intrudurre nuovamente un documento gi� cancellato, mi compare il
messaggio di progressivo gi� impegnato perch� il DLookup lo fa su
tutto il DB e non scriminandolo per Anno di riferimento(quindi quel
valore � verosimilmente presente anche in altre annualit�) ... per non
tediarvi ulteriormente avrei bisogno di modificar la predetta ruoitine
associando il controllo del dcampo duplkicato al solo anno di
riferimento ... ho tentato e ritentato ma persi la retta via ...
Come risolvere ??? ... Grazie per la solita pazienza e cortesia ...
Francesco
-- 
Ciao
Geppo 

...ehm cio�:
  If Not IsNull(DLookup("NumCoord", "tblCoord", "NumCoord = " & Str
(Me!NumCoord) &" and idanno = "& Me!Idanno)) And Me!NumCoord <> 
Nz(Me!NumCoord.OldValue)
Then
    MsgBox "Progressivo " & Me!NumCoord & " gi� impegnato.", vbOKOnly,
"Duplicato ... !!!"
    Cancel = True
    End If
 -- 
Ciao
Geppo