Newsgroup: it.comp.appl.access
Titolo: Eseguire funzione all'uscita del programma

Monitorizzo l'accesso al programma tramite una funzione
RilevaAccesso(blnTipoAccesso As Boolean)  a cui passo un valore bln (-1
accede 0 esce) e vari dati tipo utente loggato macchina etc etc.
All'apertura tutto ok ma alla chiusura che viene effettuata con il tasto X
in alto a dex la funzione non funziona...:( cioč mi ritrovo tutte le
variabili vuote).
Mi chiedo se chiudendo l'applicazione da tale tasto vengano persi tuti i
riferimenti alle variabili
SunRex
Questo il codice di chiusura sulla frmSplash
Private Sub Form_Unload(Cancel As Integer)
On Error GoTo ErrHandle
If Chiudi = True Then
Else
    Cancel = True
End If
ErrHandle:
If Err.Number = 0 Then Exit Sub
 End Sub
Function Chiudi()
Dim strTesto As String
Dim intScelta As Integer
 On Error GoTo ErrHandle
    Chiudi = True
        strTesto = "Vuoi uscire veramente?"
        intScelta = MsgBox(strTesto, vbYesNo + vbQuestion, "Pippo")
                If (intScelta = vbYes) Then
                        RilevaAccesso False
                        ChiudiForms
                        db.Close
                        Set db = Nothing
                        DoCmd.Quit
                Else
                        Chiudi = False
                        Exit Function
                End If
ErrHandle:
If Err.Number = 0 Then Exit Function
End Function


Ciao. Il tuo codice č un poco incasinato. A parte la dichiarazione esplicita
della function, che andrebbe fatta sempre, e l'handle di gestione degli
errori sbagliato, prova un po' se questo ti va bene.
Private Sub Form_Unload(Cancel As Integer)
On Error GoTo ErrHandle
   If Chiudi = True Then
      RilevaAccesso False
      ChiudiForms
      db.Close
      Set db = Nothing
      DoCmd.Quit
   Else
      Cancel = True
   End If
ExitHandle:
   Exit Sub
ErrHandle:
   MsgBox Err.Number & ": " & Err.Description
   Resume ExitHandle
End Sub
Public Function Chiudi() As Boolean
On Error GoTo ErrHandle
   Dim strTesto As String
   strTesto = "Vuoi uscire veramente?"
   Chiudi = (MsgBox(strTesto, vbYesNo + vbQuestion, "Pippo") = vbYes)
End Function
Sto scrivendo a memoria, senza avere Access aperto, ma ho un dubbio
sull'istruzione Quit durante l'evento Unload. Vabbč, fammi9 sapere se va...
Ciao per ora.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 End Function
...cioč, scusa, intendevo cosě:
Public Function Chiudi() As Boolean
   Dim strTesto As String
   strTesto = "Vuoi uscire veramente?"
   Chiudi = (MsgBox(strTesto, vbYesNo + vbQuestion, "Pippo") = vbYes)
End Function
l'istruzione On Error va levata, altrimenti non trova l'etichetta.


 ha scritto nel messaggio
news:151Z37Z79Z249Y...@usenet.libero.it...

Grazie ciccio ma hai spostato solo due righe dalla funzione all'evento
unload...
Inoltre la function sta in un modulo  e la gestione degli errori l'ho
tagliata nel post...:)
quella vera č di Ale Baraldi che vedi sotto in tutta la sua bellezza:)
ErrHandle:
If Err.Number = 0 Then Exit Function
      With clsLog
        .Note = "Modulo Utility " & " Function Chiudi() "
        .Delimitatore = "/"                'DEFAULT=vbTab
        .Data_Mode = 1                      'DEFAULT=1
        End With
            clsLog.Messaggio = Chr(13) & "Errore numero = " & Err.Number &
Chr(13) & "Descrizione : " & Err.Description
            clsLog.Action_WriteOut
cmq il problema non si risolve :( ho provato a lanciare la funzione da
diverse
parti ma le variabili risultano vuote.
Questa la funzione incriminata
Attribute VB_Name = "GestioneAccessi"
Option Compare Database
Option Explicit
Public Function RilevaAccesso(blnTipoAccesso As Boolean)
Dim rsAccessi As DAO.Recordset
On Error GoTo ErrHandle
Set rsAccessi = db.OpenRecordset("tblAccessi")
rsAccessi.AddNew
    rsAccessi.Fields("Utente") = sUtente
    rsAccessi.Fields("Host") = sDominioeUtente
    rsAccessi.Fields("Loggato") = strUtente
    rsAccessi.Fields("Tipo") = blnTipoAccesso
rsAccessi.Update
    rsAccessi.Close
    Set rsAccessi = Nothing
ErrHandle:
....etc etc
End Function
SunRex


 SunRex
Ho fatto ulteriori prove ed il problema sembra essere proprio che se il
programma viene
chiuso col tasto X non funziona.
Suggerimenti?
SUnRex


 quella vera è di Ale Baraldi che vedi sotto in tutta la sua bellezza:)
Beh, con tutto il rispetto che ho per Alessandro Baraldi, non significa che
non possa essere migliorata. Appena ne avrò l'occasione lo dirò
personalmente anche a lui stesso.
In realtà la riga "If Err.Number = 0 Then Exit Function" aggiunge soltanto
una verifica condizionale in più, che non serve a nulla e si può evitare
semplicemente scrivendo Exit Sub (oppure Exit Function) immediatamente prima
dell'etichetta del gestore di errori.
Anzi, adesso che hai postato la funzione, ti suggerisco anche di sostituire
l'istruzione "Chr(13)" (che di per sé è incompleta, in quanto manca del
CarriageReturn Chr(10), il quale viene eseguito automaticamente da VBA, con
un leggero rallentamento nell'esecuzione) con la costante vbCrLf, che è
anche più leggibile, con buona pace di quelli a cui le costanti interne non
piacciono.

Beh sembra che per qualche motivo ti perda dei dati da qualche parte, ma non
credo che si possa fare un debug qui.
Invece ti consiglio di farlo tu stesso impostando un punto di
interruzione,proseguendo passo-passo con F8 e verificando di volta in volta
nella finestra Immediata il valore delle variabili che ti servono, scrivendo
"?nomevariabile" e premendo Invio. In questo modo da qualche parte troverai
che un valore viene perso, e vedrai anche che cosa lo azzera.
Ciao.



Ma davvero.......?
SunRex