Problem in AccessDb zu schreiben

  • Hallo zusammen

    Ich möche eine Programmverwaltung erstellen. Ich habe auf einem Netzwerkshare alle Programme die ich immer benötige.
    Da es inzwischen ziemlich viele sind möchte ich ein Programm schreiben welches mir alle Ordner rekursiv ausliest und dann in eine Access Datenbank schreibt. Dank der Funktion von BugFix ist das auslesen kein Problem. Mein Problem ist im Moment das Schreiben in die Access Datenbank.

    Ich möchte den Pfad in Acces Datenbank schreiben, um später das Verzeichnis aufzurufen.

    Hier mal mein Script

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.3.6.0
    Author: Storyteller

    [/autoit] [autoit][/autoit] [autoit]

    Script Function:
    Programmverwaltung von instdisk.
    Das Progamm ist zur übersicht übder die Programme
    auf dem Server gedacht.
    Im Hintergrund läuft eine MS Access Datenbank.

    [/autoit] [autoit][/autoit] [autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Access.au3>
    #include <_Loginbox.au3>
    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #Region ### START Koda GUI section ### Form=
    $Programmverwaltung = GUICreate("Programmverwaltung instdisk", 451, 264, 194, 113)
    $g_beschreibung = GUICtrlCreateGroup("Beschreibung", 8, 80, 433, 137)
    $e_beschreibung = GUICtrlCreateEdit("", 16, 100, 417, 105, $ES_READONLY)
    GUICtrlSetData(-1, "")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $bt_dir = GUICtrlCreateButton("Verzeichnis öffnen", 8, 224, 137, 33, $WS_GROUP)
    $bt_update = GUICtrlCreateButton("Update", 300, 224, 137, 33, $WS_GROUP)
    $l_title = GUICtrlCreateLabel("Programmverwaltung", 8, 8, 171, 24)
    GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
    $Group1 = GUICtrlCreateGroup("Programmauswahl", 8, 32, 433, 49)
    $c_type = GUICtrlCreateCombo("Typ", 16, 52, 200, 25)
    $c_prog = GUICtrlCreateCombo("Programm", 233, 52, 200, 25)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    ;~ Case $bt_dir
    ;~ Call ("_OpenDir")
    Case $bt_update
    Call ("_Update")
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ;==============================================================================
    ; Name:_Update
    ; Description:Liest rekursiv alle Ordner im Verzeochnis X:\
    ;aus und speichert sie in die MS Access Datenbank
    ;==============================================================================
    Func _Update()
    ; Hier kommt eine Login Box

    [/autoit] [autoit][/autoit] [autoit]

    ;Auflisten der Verzeichnisse
    $ret = _GetFilesFolder_Rekursiv('C:\Test\','', 1, 1)
    If IsArray($ret) Then
    _ArrayDisplay($ret, 'Rekursiv alle Ordner')
    Else
    MsgBox(0, 'Fehler', $ret & @CRLF)
    ConsoleWrite($ret & @CRLF)
    EndIf
    $aCount = 0
    For$j = 0 to 100 Step 1
    _accessAddRecord('C:\Test\prog_db.mdb','Test',$ret[$aCount],'path')
    $aCount =$aCount +1
    Next
    EndFunc ;==>_Update

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;==================================================================================================
    ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0]]])
    ; Description: Rekursive Auflistung von Dateien und/oder Ordnern
    ; Parameter(s):$sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
    ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
    ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
    ; optional: $iRetType 0 gibt Array, 1 gibt String zurück (Einträge @LF-getrennt)
    ; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================
    Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0)
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Global $strFiles = ''
    If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir)
    If $iRetType = 0 Then
    Local $aOut
    $aOut = StringSplit(StringTrimRight($strFiles,1), @LF)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    Return $aOut
    Else
    Return StringTrimRight($strFiles,1)
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1)
    If ($Dir = -1) Or ($Dir = 0) Then
    For $file In $Folder.files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
    $strFiles &= $file.Path & @LF
    Else
    $strFiles &= $file.Path & @LF
    EndIf
    Next
    EndIf
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & @LF
    _ShowSubFolders($Subfolder, $Ext, $Dir)
    Next
    EndFunc

    [/autoit]


    Ich habe Access 2007 und Windows 7 32-bit

    Ich habe noch die Access-Datenbank und eine kleines ordner verzeichnis zum testen angefüght.

    Danke für eure Hilfe
    Storyteller

    Edit: Fehlende Dateien angehängt, Errorcode angefüght

    Spoiler anzeigen

    >"C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\div\autoit\__Programmverwaltung\main.au3" /autoit3dir "C:\Program Files\AutoIt3" /UserParams
    +>17:11:00 Starting AutoIt3Wrapper v.2.0.1.24 Environment(Language:0407 Keyboard:00000807 OS:WIN_7/ CPU:X64 OS:X86)
    >Running AU3Check (1.54.19.0) from:C:\Program Files\AutoIt3
    C:\div\autoit\__Programmverwaltung\main.au3(117,50) : WARNING: $strFiles possibly not declared/created yet
    $strFiles &= $file.Path & @LF
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\div\autoit\__Programmverwaltung\main.au3 - 0 error(s), 1 warning(s)
    ->17:11:00 AU3Check ended.rc:1
    >Running:(3.3.6.0):C:\Program Files\AutoIt3\autoit3.exe "C:\div\autoit\__Programmverwaltung\main.au3"
    0C:\div\autoit\__Programmverwaltung\main.au3 (71) : ==> Subscript used with non-Array variable.:
    _accessAddRecord('C:\Test\prog_db.mdb','Test',$ret[$aCount],'path')
    _accessAddRecord('C:\Test\prog_db.mdb','Test',$ret^ ERROR
    ->17:11:02 AutoIT3.exe ended.rc:1
    >Exit code: 1 Time: 3.168

    Zuer genaueren Beschreibung: Es wird nicht in die Datenbank geschrieben und ich seh gerade keinen Fehler