Newsgroup: it.comp.appl.access
Titolo: Codice per uscire da form previo controllo valori textbox: BUG

Il codice seg. ha un bug: praticamente avviene sempre l'uscita dalla
maschera perchè viene sempre eseguito il codice dopo If DCount.
----------------- INIZIO CODICE ----------------
Private Sub cmdEsci_Click()
On Error GoTo Err_cmdEsci_Click
Dim dbMIODB As DAO.Database
Dim rsUtenti As DAO.Recordset
Dim stDocName As String
Dim stLinkCriteria As String
If
 IsNull(Nome) Or IsNull(Cognome) Then
    If MsgBox("Annullare l'inserimento del nuovo utente?", vbQuestion +
vbYesNo, "ATTENZIONE") = vbYes
 Then
        Exit Sub
    Else
        If
 IsNull(Nome) Then
            MsgBox "Inserisci un nome valido", vbExclamation,
"ATTENZIONE"
            Forms![frmAggiungiUtente]![Nom­e].SetFocus
        ElseIf IsNull(Cognome) Then
            MsgBox "Inserisci un Cognome valido", vbExclamation,
"ATTENZIONE"
            Forms![frmAggiungiUtente]![Cog­nome].SetFocus
        End If
    End If
End If
If DCount("*", "tblUtenti") > 0 Then
    Set dbMIODB = CurrentDb
    Set rsUtenti
 = dbMIODB.OpenRecordset("tblUten­ti")
    Me.Requery
    dbMIODB.Close
    stDocName = "frmSchedaPrimoContatto"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
    Forms!frmSchedaPrimoContatto.S­etFocus
    Forms!frmSchedaPrimoContatto
.Requery
    DoCmd.Close acForm, "frmAggiungiUtente"
Else
    If MsgBox("Nessun contatto presente nel database." & Chr(13) &
Chr(10) & "Cliccare su OK per mantenere aperta la finestra corrente ed
inserire un nuovo contatto" & Chr(13) & Chr(10) & "oppure su ANNULLA
per annullare e tornare al Pannello Comandi", vbOKCancel, "ATTENZIONE -
DATABASE VUOTO") = vbOK Then
        Exit Sub
    Else
        DoCmd.OpenForm "frmPannelloComandi"
        DoCmd.Close acForm, "frmAggiungiUtente"
    End If
End If
Exit_cmdEsci_Click:
    Exit Sub
Err_cmdEsci_Click:
    MsgBox Err
.Description
    Resume Exit_cmdEsci_Click
End Sub
------------------ FINE CODICE ----------------------
Come posso aggiustarlo affinchè il codice dopo If DCount venga
eseguito SOLO se nè Nome nè Cognome sono vuoti?
Rifaccio il test tipo If Not IsNull (Nome) And Not IsNull (Cognome)
then
If DCount...ecc...ecc...?
Grazie a tutti :)

Risolto appunto con
If Not IsNull (Nome) And Not IsNull (Cognome) Then
Però c'è uno strano problema:
la riga:
If MsgBox("Annullare l'inserimento del nuovo utente?", vbQuestion +
vbYesNo, "ATTENZIONE") = vbYes
 Then
        Exit Sub
dovrebbe farmi uscire dalla maschera se clicco su SI. Invece se clicco
su SI non accade niente. Resto nella maschera. Come mai?????
Senza tener conto che a volte ho dei valori incrociati del tipo che se
voglio uscire cliccando su vbYes esco se clicco su vbNo e quindi devo
incrociare il codice e mettere = vbNO then Exit Sub
E' uno strano comportamente che non riesco a capire.

[CUT]
Domanda
---------
If MsgBox("Annullare l'inserimento del nuovo utente?", vbQuestion +
vbYesNo, "ATTENZIONE") = vbYes
 Then
        Exit Sub
dovrebbe farmi uscire dalla maschera se clicco su SI. Invece se clicco
su SI non accade niente. Resto nella maschera. Come mai?????
Senza tener conto che a volte ho dei valori incrociati del tipo che se
voglio uscire cliccando su vbYes esco se clicco su vbNo e quindi devo
incrociare il codice e mettere = vbNO then Exit Sub
E' uno strano comportamente che non riesco a capire.
--------------
Suggerimento:
Ciao Giulio,
prova nel seguente modo
Dim stringa As String
stringa = Trim(MsgBox("Annullare l'inserimento del nuovo utente?", 
vbQuestion + vbYesNo, "ATTENZIONE"))
If stringa = vbYes Then
 'Codice da scrivere nel caso di Si
End If
If stringa = vbNo Then
  'Codice da scrivere nel caso di No
End If
Trovi cmq la  funzione MsgBox ampiamente documentata nell'help...
Alla prossima ;-)

[CUT]
http://msdn.microsoft.com/library/ita/default.asp?url=/library/ITA/vblr7/html/vafctMsgBox.asp
e mi raccomando "Occhio sempre vigile" ;-) 

[CUT]
Pardon...te lo avevo detto che ero "cotto"...non ho neanche visto il valore 
di ritorno della Msgbox...
Dim ritorno As Integer
ritorno = Trim(MsgBox("Annullare l'inserimento del nuovo utente?", 
vbQuestion + vbYesNo, "ATTENZIONE"))
If ritorno = vbYes Then
 'Codice da scrivere nel caso di Si
End If
If ritorno = vbNo Then


[CUT]
Ed ovviamente puoi togliere Trim ...
ritorno = MsgBox("Annullare l'inserimento del nuovo utente?", vbQuestion + 
vbYesNo, "ATTENZIONE")
gicchè ritorno "memorizzerà" un intero... 

[CUT]
Ora vado a nanna... e mi raccomando il cursore puň essere visualizzato in un 
solo posto sullo schermo altrimenti significa che si č trascorse parecchie 
ore davanti al pc e quindi siamo noi ad avere il "focus"...nel senso che 
"non mettiamo piů a fuoco" ;-) 

Giulio Severini ha scritto:



Io direi, molto semplicemente, che non esce dalla maschera perchè non ci
hai messo la relativa istruzione. Exit Sub termina immediatamente la
routine. Se vuoi chiudere la maschera mettici un docmd.close
Namor
-- 
namor at inwind punto it
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Ciao Namor. Si, alla fine me ne sono accorto ehehehe
Cmq grazie sei stato molto gentile :D