jhaustein
Goto Top

Fehlermeldung bei Aufruf einer SUB function

Hallo Gemeinschaft,

folgenden code möchte ich gerne zum Laufen bringen

Sub Start()


Application.OnTime Now + TimeValue("00:00:15"), "'Whatever'", , True  


End Sub

bekomme aber diese Meldung
Methode oder Datenobjekt nicht gefunden

Content-Key: 2059583140

Url: https://administrator.de/contentid/2059583140

Printed on: April 25, 2024 at 07:04 o'clock

Mitglied: 1915348599
1915348599 Mar 04, 2022 updated at 10:14:31 (UTC)
Goto Top
folgenden code möchte ich gerne zum Laufen bringen
Wo, in Access? Da gibt es die OnTime Methode nüscht, wie die Fehlermeldung ja auch schon sagt ...
Die gibt's nur in Word und Excel.
Member: jhaustein
jhaustein Mar 04, 2022 updated at 10:15:14 (UTC)
Goto Top
sorry - ja in access - wie kann ich dann zeitgesteuerte Ausführungen von code erstellen
Mitglied: 1915348599
1915348599 Mar 04, 2022 updated at 10:16:37 (UTC)
Goto Top
wie kann ich dann zeitgesteuerte Ausführungen von code erstellen
Mit der Aufgabenplanung.
Member: jhaustein
jhaustein Mar 04, 2022 at 10:18:31 (UTC)
Goto Top
wie würdest du es denn machen, wenn ich alle 10 minuten in access die Sub starten_import ausführen möchte
Mitglied: 1915348599
Solution 1915348599 Mar 04, 2022 updated at 10:25:24 (UTC)
Goto Top
Aufgabenplanung .

Set acObj = CreateObject("Access.Application")  
acObj.Application.Visible = True
acObj.OpenCurrentDatabase "C:\testMDB\TEST.mdb",,"ADatabasePassword"  
acObj.Application.Run "starten_import"  
Member: jhaustein
jhaustein Mar 05, 2022 at 16:00:44 (UTC)
Goto Top
hallo Gemeinschaft

bekomme dieses script nicht zum laufen - habe bereits vor den functions ptrsafe geschrieben wegen 64 bit - aber es bricht immer an dieser stelle ab

hTimer = SetTimer(0, 0, 100, AddressOf TimerProc)

Option Compare Database
Option Explicit

'--------- Anfang Modul "Module1" alias Module1.bas ---------  

Private Declare PtrSafe Function SetTimer Lib "user32" (ByVal hWnd As _  
        Long, ByVal nIDEvent As Long, ByVal uElapse As Long, _
        ByVal lpTimerFunc As Long) As Long

Private Declare PtrSafe Function KillTimer Lib "user32" (ByVal hWnd As _  
        Long, ByVal nIDEvent As Long) As Long

Private Declare PtrSafe Function FindFirstChangeNotification _
       Lib "kernel32" Alias "FindFirstChangeNotificationA" _  
       (ByVal lpPathName As String, ByVal bWatchSubtree _
       As Long, ByVal dwNotifyFilter As Long) As Long
             
Private Declare PtrSafe Function FindNextChangeNotification Lib _
        "kernel32" (ByVal hChangeHandle As Long) As Long  
       
Private Declare PtrSafe Function FindCloseChangeNotification _
        Lib "kernel32" (ByVal hChangeHandle As Long) _  
        As Long

Private Declare PtrSafe Function WaitForSingleObject Lib "kernel32" _  
        (ByVal hHandle As Long, ByVal dwMilliseconds As _
        Long) As Long
              
Const FILE_NOTIFY_CHANGE_ATTRIBUTES = &H4
Const FILE_NOTIFY_CHANGE_DIR_NAME = &H2
Const FILE_NOTIFY_CHANGE_FILE_NAME = &H1
Const FILE_NOTIFY_CHANGE_LAST_WRITE = &H10
Const FILE_NOTIFY_CHANGE_SECURITY = &H100
Const FILE_NOTIFY_CHANGE_SIZE = &H8

Const INVALID_HANDLE_VALUE = -1
Const WAIT_OBJECT_0 = 0
 
Public TimerEnabled As Boolean

Dim hTimer As Long, hFile As Long, SubDirs As Long
Dim WatchPath As String
Dim Flag As Boolean, Started As Boolean

Public Sub Init(Path As String, SubTrees As Boolean)
    SubDirs = IIf(SubTrees, 1, 0)
    WatchPath = Path & Chr$(0)
    Flag = False
    Started = False
    hFile = 0
   
    'Timer initialisieren  
    hTimer = SetTimer(0, 0, 100, AddressOf TimerProc)
    TimerEnabled = True
End Sub

Public Sub Uhrzeit()
    Debug.Print Time          'Uhrzeit ausgeben  
End Sub

Public Sub Terminate()
    'Wenn die Überwachung noch läuft, dann jetzt beenden  
    If hFile <> 0 Then Call FindCloseChangeNotification(hFile)
    
    'Timer entfernen  
    Call KillTimer(0, hTimer)
    TimerEnabled = False
End Sub

Private Sub TimerProc(ByVal hWnd&, ByVal Msg&, ByVal idEvent&, _
                      ByVal dwTime&)
    
    If Not Flag Then
        'Flag setzen damit weitere TimerEvents nicht in die  
        'Quere kommen  
        Flag = True
        
        'Schaun ob Überwachung gestartet wurde  
        If Not Started Then
            
            'Nein, daher erstmal ein Handle für die Überwachung holen.  
            'FILE_NOTIFY_CHANGE_FILE_NAME gibt hierbei den Überwach-  
            'ungstyp an, d.h. es wird auf Änderungen mit Dateinamen  
            'gelauscht. Werden weitere gewünscht, so kann dieser  
            'Parameter mit durch Veroderung der entsprechenden Flags  
            'erweitert werden.  
            hFile = FindFirstChangeNotification(WatchPath, SubDirs, _
                                     FILE_NOTIFY_CHANGE_FILE_NAME)
            
            'Lieg alles glatt dann ein Flag setzen um beim nächsten  
            'TimerEvent an anderer Stelle fortzufahren  
            If hFile <> INVALID_HANDLE_VALUE Then Started = True
            
        Else
        
            'Mal schaun ob was anliegt und ein bissel warten um die  
            'Änderungen wirksam werden su lassen  
            If WaitForSingleObject(hFile, 50) = WAIT_OBJECT_0 Then
            
                'Benachrichtigung des Anwenders  
                Debug.Print Now
                Beep
            End If
            
            'Mal gucken ob's noch weitere Dateien werden, deshalb die  
            'Überwachung fortsetzen.  
            Call FindNextChangeNotification(hFile)
            
            'Alles in Ordnung?  
            If hFile = 0 Then
                
                'Ups, da lag ein Fehler vor, besser mal die Überwachung  
                'schließen.  
                Call FindCloseChangeNotification(hFile)
                Started = False
            End If
        End If
    
        'Timer Events wieder zum Verarbeiten zulassen  
        Flag = False
    End If
End Sub
'---------- Ende Modul "Module1" alias Module1.bas ----------  
'-------------- Ende Projektdatei Project1.vbp --------------  

das ist der code in der form

Option Explicit

Private Sub btnStart_Click()
    If Not TimerEnabled Then
        Call Init(Me.txtPath, False)
    End If
End Sub

Private Sub btnStop_Click()
Call Terminate
End Sub