Access Datei komplett in Array lesen

  • Moin,

    ich arbeiet mit dieser Accesss UDF.

    Mit der Func _AccessRecordList lese ich zeilenweise die Daten der 35 Spalten in ein Array.

    Da ich aber 2500 Zeilen mit 35 Spaltem in der Access-Datei habe, wird es mit der Func _AccessRecordList zeilenweise ausgelesen sehr langsam.

    Wie kann ich alles komplett in ein Array auslesen?

    Vielleicht könnt ihr mir helfen.

    Gruß

  • Hey

    kannst die nochmal uppen?

    der support wurde von seiner seite eingestellt kann die nicht runterladen :)

    dann kann ich mal drüberschauen

    Hab keinen plan von access darum schmeiß ich erstmal nur mit _filelisttoarray() rum :D

    Grüße

  • kannst die nochmal uppen?

    der support wurde von seiner seite eingestellt kann die nicht runterladen :)

    dann kann ich mal drüberschauen

    Der Link zur AccessUDF_rev2_1.rar funktioniert ! Ich habe die UDF aber noch mal (als .zip) "geuppt".

    Hab keinen plan von access darum schmeiß ich erstmal nur mit _filelisttoarray() rum :D

    Wenn man keinen Plan hat, sollte man besser nicht mit irgendetwas 'rumschmeißen :rolleyes:.

    Was hat _FileListToArray (-> listet Dateien und/oder Ordner eines bestimmten Ordners auf) denn bitte mit dem Problem von wuff100 zu tun ?

    wuff100 :

    Ich gehe mal davon aus, dass die Datenbank vom Typ .mdb ist, wie von der o.a. UDF gefordert.

    Zum Testen habe ich die Test.mdb aus dem UDF-Beispiel verwendet.

    Der Zugriff erfolgt aber über ADO, d.h. Du benötigst die UDF selbst nicht.

    Die Namen der Datenbank und der Tabelle müssen natürlich mit Deinen Werten besetzt werden.

    Mit der Testdatei funktioniert es.

    Das Zeitverhalten bei Deiner Riesendatei kann ich nicht abschätzen - probiere es einfach mal aus ;).

    Gruß Musashi

  • oops sorry vertan im befehl - war wohl noch nicht ganz wach

    _SQLite_GetTable2d war eigentlich was ich meinte ...

  • oops sorry vertan im befehl - war wohl noch nicht ganz wach

    _SQLite_GetTable2d war eigentlich was ich meinte ...

    So ganz wach bist Du offenbar immer noch nicht (aus Versehen koffeinfreien Kaffee erwischt ?) ;)

    In der Frage von wuff100 geht es um MS Access -> "Die Microsoft Access Database ist das Standard-Datenbank-Format von Microsoft Access. Die Standard-Datei-Erweiterung ist „.mdb“ (seit Access 2007 auch „.accdb“)."

    _SQLite_GetTable2d ist zwar bereits dichter dran, aber was denkst Du, für welche Datenbank das _SQLite_ in diesem Befehl steht ?

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Musashi , vielen Dank!

    So habe ich mir es vorgestellt. :)

    Es wäre doch bestimmt ohne ForNext-Schleife möglich, alle Werte einer bestimmten Spalte in ein Array zu lesen?

    Vielleicht kannst Du mir ja nochmal helfen.

  • Es wäre doch bestimmt ohne ForNext-Schleife möglich, alle Werte einer bestimmten Spalte in ein Array zu lesen?

    Möglich wahrscheinlich schon, aber meiner Meinung nach nicht erforderlich ;).

    Ein separates 1D-Array für die gewünschte Spalte mittels For..Next ist eine saubere Sache.

    Zeitdauer = zu vernachlässigen (ich habe es mit einem Array 2500 Zeilen X 40 Spalten getestet)

    Hier das neue Skript (siehe Bereich -> ; ERWEITERUNG :)

    EDIT : Skript und Test.mdb als Zip-Datei angehängt

    EDIT 2 :

    Hinweise zu Connection Strings

    Abhängig von dem Format/Version der Datenbankdatei müssen unterschiedliche Connection Strings verwendet werden.

    Hier eine Auswahl (3. und 4. ungetestet) :

    1. Microsoft Access ODBC Driver :

    (Access 97, Access 2000, Access 2002, Access 2003)

    Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;

    $oConnection.Open("Driver=Microsoft Access Driver (*.mdb); DBQ=" & $sDatabaseName)

    Info :

    Dbq= Name der Datenbank

    Uid= User ID (optional)

    Pwd= Passwort (optional)

    2. Microsoft Access accdb ODBC Driver

    (Access 2007, Access 2010, Access 2013)

    Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\mydatabase.accdb;Uid=Admin;Pwd=;

    $oConnection.Open("Driver=Microsoft Access Driver (*.mdb, *.accdb); DBQ=" & $sDatabaseName)

    3. Nur Info : Microsoft ACE OLEDB 12.0 :

    (Access 2007, Access 2010, Access 2013)

    Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;Persist Security Info=False;

    4. Nur Info : Microsoft Jet OLE DB 4.0

    (Access 97, Access 2000, Access 2002, Access 2003)

    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;UserId=admin;Password=;

    Ansonsten :

    ==> Google : "access connection string")

    ==> siehe auch : https://www.autoitscript.com/forum/topic/18…t-to-ms-access/

    ==> prüfen, ob das Skript 32/64 Bit 'kompiliert' wurde (muss zum Treiber passen)

    Gruß Musashi

    Dateien

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    3 Mal editiert, zuletzt von Musashi (23. Oktober 2019 um 07:33) aus folgendem Grund: Hinweis eingefügt