devo eseguire una subroutine in Microsoft Access ogni 15 minuti

Anonimo
2023-07-27T08:03:07+00:00

ho impostato questo codice:

Option Compare Database

Option Explicit

Dim WithEvents TimerEvent As Timer ' mi da un errore

Private Sub TimerEvent_Timer() ' Esegui la subroutine che vuoi ogni 15 minuti qui ' Sostituisci "NomeSubroutine" con il nome reale della tua subroutine

Call NomeSubroutine

End Sub

Public Sub StartTimer() ' Imposta l'intervallo del timer a 15 minuti (15 * 60 * 1000 millisecondi)

Set TimerEvent = CreateObject("Access.Timer")

TimerEvent.Interval = 15 * 60 * 1000

TimerEvent.Enabled = True

End Sub

Public Sub StopTimer() ' Interrompi il timer

TimerEvent.Enabled = False

Set TimerEvent = Nothing

End Sub

mi da errore sull'istruzione: Dim WithEvents TimerEvent As Timer

come devo procedere?

grazie delle risposte

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

8 risposte

Ordina per: Più utili
  1. Anonimo
    2023-07-28T17:27:35+00:00

    Sono felice di sapere che sei stato in grado di trovare una soluzione al tuo problema di controllo Timer e che ora sta funzionando alla grande per te. Il codice fornito ha un bell'aspetto e dovrebbe gestire efficacemente la funzionalità del timer necessaria.

    Se hai altre domande o hai bisogno di ulteriore assistenza in futuro, non esitare a contattarci. Sono qui per aiutarti.

    Buona codifica e buona fortuna con il tuo progetto Microsoft Access!

    Cordiali saluti, Ivan

    Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2023-07-28T17:25:42+00:00

    Grazie,

    la soluzione del controllo Timer me l'ha suggerita uno della community

    comunque avevo risolto come mi hai spiegato e funziona benissimo

    Private Sub ArrestaTimer_Click()

    Me.TimerInterval = 0

    End Sub

    Private Sub AvviaTimer_Click()

    Me.TimerInterval = 50000 '900000 per 15 minuti

    End Sub

    Private Sub Form_Timer()

    Me!giorno.Requery

    Me!ora.Requery

    Call importa

    End Sub

    Grazie moltissime

    Gianmario POLENGHI

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-07-28T16:00:10+00:00

    In Microsoft Access, non esiste un controllo Timer incorporato come in altri ambienti di programmazione, che causa il problema. Tuttavia, esiste un approccio alternativo che è possibile utilizzare per ottenere la funzionalità desiderata.

    Ecco come puoi procedere:

    1. Crea un modulo: Innanzitutto, creare un modulo nascosto nel database di Microsoft Access. Puoi chiamarlo "frmTimer" o qualsiasi altro nome significativo.
    2. Aggiungi un intervallo timer: Aprire il modulo nascosto in visualizzazione Struttura e nella finestra delle proprietà impostare la proprietà "Intervallo timer" su 900000 (15 minuti in millisecondi). Questa proprietà determina la frequenza con cui verrà attivato l'evento Timer.
    3. Aggiungi procedura evento timer: Nel modulo di codice del modulo nascosto aggiungere la seguente routine evento per l'evento Timer:

    Sub privato Form_Timer() ' Run the subroutine you want every 15 minutes here ' Replace 'SubroutineName' con il vero nome della tua subroutine Nome chiamataSubroutine Fine sub

    1. Chiama StartTimer: È ora possibile creare un modulo separato nel database di Microsoft Access e includere le procedure StartTimer e StopTimer fornite in precedenza. Queste procedure avvieranno e arresteranno il timer sul modulo nascosto:

    Opzione Confronta database Opzione esplicita

    Sub Privato StartTimer() Open the hidden form to start the timer DoCmd.OpenForm "frmTimer", acHidden Fine sub

    Sub StopTimer privato() Close the hidden form to stop the timer DoCmd.Close acForm, "frmTimer" Fine sub

    1. Esegui il timer: Infine, per avviare il timer e attivare la subroutine ogni 15 minuti, è possibile chiamare la routine StartTimer nella posizione appropriata nel database di Microsoft Access (ad esempio, all'avvio del database, clic su un pulsante o in una macro AutoExec).

    Si noti che non è più necessaria la riga "Dim WithEvents TimerEvent As Timer" e la relativa procedura TimerEvent_Timer poiché stiamo utilizzando un modulo nascosto con un controllo Timer.

    Attenendosi alla seguente procedura, si dovrebbe essere in grado di ottenere la funzionalità di eseguire la subroutine in Microsoft Access ogni 15 minuti senza riscontrare l'errore di controllo Timer.

    Se hai ulteriori domande o hai bisogno di ulteriore assistenza, non esitare a chiedere.

    Migliori saluti Ivan

    Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2023-07-28T12:39:52+00:00

    Non ho un controllo Timer nei controlli

    Cosa devo fare?

    Grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2023-07-27T08:40:38+00:00

    Ehilà

    Sulla base del codice fornito, sembra che l'errore si verifichi specificamente sulla riga: "Dim WithEvents TimerEvent As Timer". Il motivo di questo errore è che l'oggetto "Timer" non è direttamente disponibile in Microsoft Access come in alcuni altri ambienti di programmazione.

    Per ottenere la funzionalità desiderata, è possibile utilizzare un approccio diverso utilizzando un evento modulo basato su timer anziché WithEvents.

    Seguire i passaggi rivisti di seguito per implementare la funzionalità timer senza la dichiarazione WithEvents:

    1. Aprire il database di Microsoft Access in visualizzazione Progettazione.
    2. Crea un nuovo modulo (se non l'hai già fatto) andando alla scheda "Crea" e selezionando "Design modulo".
    3. Aggiungere un controllo Timer al form:
    • Vai alla scheda "Progettazione" e fai clic su "Toolbox" per aprire il riquadro della casella degli strumenti.
    • Scorri verso il basso e trova "Timer" nei controlli disponibili.
    • Fare clic e trascinare il controllo "Timer" sul modulo. Verrà creato un controllo timer denominato "Timer0".
    1. Impostare la proprietà TimerInterval del controllo Timer su 900000 (15 minuti in millisecondi):
    • Con il modulo aperto nella visualizzazione Progettazione, selezionare il controllo Timer (Timer0) nel modulo.
    • Nel riquadro Finestra delle proprietà, individuare la proprietà "TimerInterval".
    • Immettere il valore "900000" (ovvero 15 minuti in millisecondi) per TimerInterval.
    1. Aggiungi il codice evento Timer per eseguire la subroutine:

    Fare doppio clic sul controllo Timer (Timer0) per aprire la finestra del codice VBA. Aggiungere il codice riportato di seguito alla routine evento Timer:

    Sub privato Timer0_Timer() ' Run the subroutine you want every 15 minutes here ' Replace 'NameSubroutine' with the real name of your subroutine Nome chiamataSubroutine Fine sub

    1. Salvare il modulo con un nome appropriato (ad esempio, "frmTimer").
    2. Nel database di Access, creare un nuovo modulo o utilizzarne uno esistente per memorizzare le funzioni StartTimer e StopTimer. Modificare il codice come segue:

    Public frmTimerInstance As Form

    Public Sub StartTimer() Se frmTimerInstance non è nulla, allora Imposta frmTimerInstance = Nuovo Form_frmTimer Fine Se frmTimerInstance.Timer0.Enabled = True Fine sub

    Public Sub StopTimer() Se non frmTimerInstance non è nulla, allora frmTimerInstance.Timer0.Enabled = False Set frmTimerInstance = Nothing Fine Se Fine sub

    Ora è possibile avviare il timer ed eseguire la subroutine ogni 15 minuti chiamando la routine StartTimer ed è possibile arrestare il timer utilizzando la procedura StopTimer.

    Se riscontri ulteriori problemi o hai domande, non esitare a contattarci. Sono qui per aiutarti.

    Migliori saluti

    Ivan

    Questa risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o espressioni strane.

    La risposta è stata utile?

    0 commenti Nessun commento