Newsgroup: it.comp.appl.access
Titolo: chiudere form all'uscita da un campo

chiedo in anticipo scusa x il rompimento... ma ieri sono diventata
ebete x riuscir a fare questo:
una maschera con una casella di testo, all'uscita dalla casella (con
tastiera o mouse) controlla se è stata immessa una stringa o se è
rimasta vuota, se è vuota chiude la maschera, sennò fa un qualcosa e
quando ha finito chiude...
c'ero riuscita quando l'avevo associata all'evento click di un
pulsante, ma se all'evento on exit scrivo nel codice DoCmd.Close per
chiudere, la form access da di matto...
Ho passato una giornata a fare tentativi ma non ho trovato niente,
forse è una cavolata e io non ci arrivo :-)
Qualcuno per caso qualche idea x risolvere il mio problema? Copio in
fondo la routine che funzionava su pressione del pulsante a titolo
indicativo.
Grazie in anticipo a chi sarà così paziente da rispondermi (fate
finta che io abbia 5 anni)...
Snoop
Private Sub manda_Click()
Dim cartella As String
Dim NomeFile As String
Dim TipoFile As String
Dim TipoDocumento As String
Dim Argomento As String
Dim ErroreMail
NomeFile = [Forms]![FotoLista]![ID]
TipoFile = [Forms]![FotoLista]![TipoFile]
TipoDocumento = [Forms]![FotoLista]![TipoDocumento]
Argomento = [Forms]![FotoLista]![Argomento]
cartella = [Forms]![FotoLista]![DirectoryFoto]
If IsNull(indirizzo) Then
    Messaggio 1, "Per spedire con Outlook l'idirizzo è obbligatorio"
'    DoCmd.Close
    'Exit Sub
Else
    ApriContatto (indirizzo)
    If IsNull(indirizzo) Then
        ErroreMail = MsgBox("Non riesco a determinare l'indirizzo email
cui" & vbCrLf & "spedire la foto o il film: riprovare!", vbExclamation)
        'DoCmd.Close
        'Exit Sub
    Else
        If ControllaEMail(indirizzo) Then
            SpedisceEmail indirizzo, "Invio " & TipoDocumento & " di
data " & Date, "Invio " & TipoDocumento & " riguardante: " & Argomento
& " di data " & Date & vbCrLf & vbCrLf & "
leonardo...@poste.it
",
False, Null, cartella, NomeFile & "." & TipoFile
            Messaggio 1, TipoDocumento & " " & NomeFile & "
correttamente inviato a " & indirizzo
            'DoCmd.Close
            Else
            ErroreMail = MsgBox("L'indirizzo associato nei contatti non
è valido!" & vbCrLf & "(Controllare nella rubrica di Outlook)",
vbExclamation)
            'DoCmd.Close
        End If
    End If
End If
MsgBox "fine"
DoCmd.Close
End Sub

Snoop ha detto: in data 29/09/2005 9.07:

prova a mettere un doevents prima di docmd.close... magari è solo un 
problema di tempistica (se questa toutine in un pulsante funziona)
oppure prova a mettere la funzione nel tuo pulsante e se il pulsante si 
chiama "comando2" nell'evento "on exit" della tua txtbox metti
comando2_click
e vedi se funziona
se non va prova ad inserire i punti di interruzione e facci sapere in 
che punto la maschera "da fuori di matto"
ciao
Nick

le ho provata già praticamente tutte, ho messo addirittura un
intervallo di 5 secondi (anche io avevo pensato ad un problema di
tempistica), ho fatto un test senza chiamare altre sub, in pratica una
semplice chiusura del form all'uscita dal campo (a prescindere dal
contenuto), è lì il problema, all'evento di uscita qualsiasi sistema
per chiamare la chiusura mi da errore: run time error 2585... this
action can't be carried out while processing a form or report event

Snoop ha detto: in data 29/09/2005 10.15:

ho provato a simulare la situazione.. effettivamente su uscita di una 
txtbox non chiude la lmaschera perchè sta ancora valutando la fuzione 
txtbox_exit
momentaneamente non ho trovato una soluzione "automatica"
l'unica è spostare il focus sul pulsante così che con un "invio" si 
attiva la routine e la maschera si chiude senza problemi...
se trovo un'altra soluzione ti faccio sapere..
ciao
nick

Snoop ha detto: in data 29/09/2005 10.15:

ho elaborato questo codice vedi un po' se va...
Private Sub Comando2_Click()
DoEvents
DoCmd.Close
End Sub
Private Sub Comando2_GotFocus()
SendKeys "~"
End Sub
Private Sub Testo0_Exit(Cancel As Integer)
Comando2.SetFocus
End Sub
nei miei test funziona (access 2000)
facci sapere
Ciao
Nick

gioia, gaudio! Non so come ringraziarti, ora lo adatto un po' alla mia
form di partenza :-)
Rigrazie e riciao:
Snoop

 
Ciao
Nick

 Snoop
Hai provato a scrivere così:
Docmd.Close acForm,Me.Name
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

grazie ancora a tutti per l'aiuto, problema risolto e progetto
completato (con un po' di trucchetti poco ortodossi ma l'importante è
il risultato)
Ciao:
Snoop