Newsgroup: it.comp.appl.access
Titolo: Costrizione inserimento campo in una maschera

Salve ho una maschera in cui devo cotringere l'utnete ad inserire un codice 
univoco.
A tal proposito nell'evento prima di aggiornare ho inserito il codice 
riportato sotto.
Le cose funzionano bene.
Adesso vorrei però bloccare l'utente sul campo. Ovvero finquando non viene 
digitato un codice univoco
non c'è possibilità di andare avanti nella compilazione.
Come risolvere?
Private Sub CodiceNIF_BeforeUpdate(Cancel As Integer)
' controlla se il numero non sia già stato inserito nella tabella
Dim Valore As Variant
Dim ricerca As String
 ' prendo il valore inserito dall'utente nella casella numero assegno
   ricerca = Me!Codice.Value
 ' faccio una ricerca sulla tabella Dati generali utilizzando come chiave il 
valore inserito
   Valore = DLookup("[Codice]", "Tab_DatiGenerali", "[Codice] = '" & ricerca 
& "'")
 If Not IsNull(Valore) Then
 MsgBox "Attenzione: Codice Già utilizzato!"
 End If
 End Sub 

 Come risolvere?
[CUT]
Il codice che hai postato su Evento DopoAggrionamento impone che
l'utente abbia inserito qualche cosa...., ma se non sbaglio
devi ancora effettuare questo controllo.
La cosa da fare è intercettare l'Evento LostFocus(Disattivato)
verificare su questo l'eventuale valore:
Evento LostFocus()
If IsNUll(me!txtCodiceUnivoco) or Len(me!txtCodiceUnivoco)=0 then 
   me!txtCodiceUnivoco.setFocus
Else
   'ora io inserirei quì il Check del Valore prima di passare
   'avanti.
   'Metti qu' il codice che hai inserito nell'Evento BeforeUpdate
   'e ne certifichi la valenza, altrimenti
   Msgbox "Codice non valido"
   me!txtCodiceUnivoco=null
   me!txtCodiceUnivoco.SetFocus
End if
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio 
news:55b758069c72b37d6d...@mygate.mailgate.org...

ho inserito il codice come suggerito
purtroppo non funziona (tengo a precisare che il campo codice è di tipo 
testo)
mi viene segnalato l'errore ma il focus non ritorna sul campo del codice
Private Sub Codice_LostFocus()
' controlla se il numero non sia già stato inserito nella tabella
Dim Valore As Variant
Dim ricerca As String
If IsNull(Me!Codice) Or Len(Me!Codice) = 0 Then
   Me!Codice.SetFocus
Else
 ' prendo il valore inserito dall'utente nella casella numero assegno
   ricerca = Me!Codice.Value
 ' faccio una ricerca sulla tabella Dati generali utilizzando come chiave il 
valore inserito
   Valore = DLookup("[Codice]", "Tab_DatiGenerali", "[Codice] = '" & ricerca 
& "'")
 ' se il valore restituito è diverso da zero il codice esiste già
 If Not IsNull(Valore) Then
    MsgBox "Attenzione: Codice Già utilizzato!"
    Me!Codice = ""
    Me!Codice.SetFocus
 End If
End If
End Sub 

 mi viene segnalato l'errore ma il focus non ritorna sul campo del codice
Stai usando degli Hiperlynk per rendere attiva la Manina...?
Il codice sotto che è praticamente come il tuo solo un pò
più pulito da me funziona.
 
Private Sub Codice_LostFocus()
 If IsNull(Me!Codice) Or Len(Me!Codice) = 0 Then
    Me!Codice.SetFocus
 Else
  ' faccio una ricerca sulla tabella Dati generali utilizzando come
chiave il
  '  valore inserito
 
      If DCount("[Codice]", _
                "Tab_DatiGenerali", _
                "[Codice]='" & Me!Codice & "'")>0  Then
 
                MsgBox "Attenzione: Codice Già utilizzato!"
                Me!Codice.Value = vbnullstring
                Me!Codice.SetFocus
      End If
 End If
 
End Sub
Non saprei come aiutarti in modo più efficace.


 End Sub
Ciao hai provato con
    Cancel = true
prima o dopo la riga di Msgbox?
Dovrebbe annullare l'aggiornamento e bloccare il cursore sul controllo 
relativo.
Ciao Nina

 ha scritto nel messaggio 
news:d6Lfe.875210$b5.38...@news3.tin.it...

La soluzione proposta non funziona
ho parzialemnte risolto il problema inserendo il controllo sull'evento 
attivato del campo successivo
in tal modo quando il campo 2 riceve il focus vado a controllare il campo 1 
se in questo c'è un duplicato
vado a cancellarne il valore inserendo di nuovo il curosore sul campo 1
La cosa funziona .. purtroppo non risco a bloccare l'utente qualora 
decidesse di lasciare il campo vuoto ed inserire il cursore
su una altro campo per continuare la compilazione.

 su una altro campo per continuare la compilazione.
E' la tecnica peggiore che potevi pensare...!
Se hai 20 Controlli e l'utente si sposta con il MOUSE...??
Quanto ti ho suggerito è la cosa da fare e funziona(da me)
vedi piuttosto perchè non ti và invece di cercare accrocchi.
Boh...!
Saluti.
