Access mit UDF Access.au3

  • Moin,

    ich arbeite mit der UDF Access.au3 mit Accessdatenbanken, was bis jetzt sehr gut funktioniert.
    Habe jetzt für Mehrbenutzerbetrieb eine Backend-Accessdatei erzeugt.

    Nun das Problem:
    Da die Frontend-Accessdatei ja nun mit der Backend-Accessdatei verknüpft ist, kann ich die Daten der Tabellen aus der Frontend-Accessdatei nicht mehr auslesen.


    Könnt ihr mir dabei helfen?


    Gruß

    Wuff

  • Hallo wuff100 :)

    ich benutze die Access.udf auch schon einige Jahre im Livebetrieb.

    Hast du mal geschaut in welchem LockTyp die geöffnet werden? Siehe Beispiel ...

    https://msdn.microsoft.com/en-us/library/…(v=bts.10).aspx

    Ich benutze jeweils immer eine Haupt DB in der alle Daten gepflegt werden und erstelle daraus dann per Macro die DB's für die User.

    Gruß gmmg

  • Hallo gmmg,


    Zitat von gmmg

    Ich benutze jeweils immer eine Haupt DB in der alle Daten gepflegt werden und erstelle daraus dann per Macro die DB's für die User.

    Hast du mal dafür ein kurzes Beispiel?
    Du öffnest mit der Funktion Access(2007-2010) Dateien, denke ich. Ich verwende noch *.mdb Access(2003) Dateien.

    Mit dem LockTyp muß ich mich noch mal beschäftigen.

    vielen Dank, melde mich Donnerstag.

    Gruß
    Wuff

  • Anbei mal ein Beispiel :)

    mdb

    hab ich grad so aus dem jeweiligen script kopiert, ist daher nicht bereinigt :)
    accdb


    gruß gmmg

  • Danke,

    welche Access UDF benutzt du genau?
    Ich diese Access UdF..
    Dort ist mit Locktype wie in deiner Funktion nichts beschrieben.

    Könntest du mir das Macro zur Teilung der DB's für die User auch noch mitteilen.

  • Das sollte die richtige sein, die ich auch nutze.

    Bei den Beispielen nutze ich die UDF nicht. Habe das jeweils als Funktion in das Script eingebunden, weil das so funktioniert :)
    In dieser sehe ich aber auch die Variable $ReadOnly in der _AccessOpen bzw. _AccessOpenDB Funktion.

    Der Export in die andere DB erfolgt über eine Tabellenerstellungsabfrage, welche per Macro dann ausgeführt wird. Was hast du denn für eine Access version, da dies etwas unterschiedlich ist.

    SELECT [01_MA].MAName, [01_MA].MAVorname, [01_MA].PC, [01_MA].SANI INTO 01_MA IN 'Z:\Share\DB_Mitarbeiter_CC\mitarbeiter_SANI.mdb' (die mitarbeiter_SANI.mdb sollte leer vorhanden sein.)
    FROM 01_MA
    WHERE [01_MA].SANI<>"";

    Hier auch nochmal ein Beispiel, wie man in eine Access DB schreiben kann. Einfach über den Query Befehl.


    Gruß gmmg :)

  • Ich nutze Access 2010.

    Aber diese UDF funktioniert meines Wissens nur mit Access 2003, also *.mdb Dateien als Appendix.
    Kann es wie gesagt erst am Donnerstag testen.

  • Hallo gmmg,
    ich komme irgendwie nicht weiter.

    Wäre es von dir aus möglich, die Access.au3 für Access 2010 anzupassen.

    Ich weiß, eine große Bitte.

    Gruß
    wuff100

  • Hallo wuff100 :)

    in meinen Beispielen ist doch alles erklärt, da brauchst du die Access.au3 überhaupt nicht.
    Sende mir doch mal deinen Quelltext oder Poste den hier. Eventuell ist es nur ein Formatierungsfehler.

    Gruß gmmg

  • Hallo gmmg,

    mein Problem ist, daß ich nach dem Teilen der Access-Datenbank in eine Front-und Backenddatenbank, nicht auf die verknüften Tabellen in der Frontend zugreifen kann.
    Nur der erste Datensatz wird ausgelesen. Das Zugreifen auf die Backend läuft ohne Probleme und es werden alle Datensätze angezeigt.

    Die Datenbank soll als Mehrbenutzerbetrieb arbeiten. Deshalb Front und Back. Ich möchte so gleichzeitige Schreibprobleme umgehen.
    Wer sich nur Daten ansehen möchte, greift dann auf seine auf dem Rechner lokal vorhandene Front zu. Nur zum Speichern soll die Back verwendet werden.

    Ich hoffe, ich denke so richtig! Oder ist es nicht nöitg, da ja das Autoit-Programm eigentlich die Front ist.

    Sonst läuft es mit der Access UDF sehr gut. Ich möchte bei *.mdb Dateien bleiben, weil nach meiner Kenntnis, dann kein Access installiert werden muß?

    Gruß
    Wuff100

  • Ob mdb oder accdb ist egal, beide benötigen kein installiertes Access.
    Ein Mehrbenutzer Zugriff sollte generell kein Problem sein. Über google findest du da einiges zum Thema.

    So ganz hab ich aber nicht verstanden, was du genau machen willst.
    In einer Master DB, werden alle Daten gepflegt. Diese DB willst du dann jeweils an die User verteilen. Wird diese Master DB zentral gepflegt oder soll es auch Schreibzugriffe von der kopie auf die master geben?

    Wenn du eine Master hast und kopierst du jeweils auf einen Client, hast du ja eventuell immer andere Datenstände, da ja der Transfer in eine jeweils andere DB immer etwas zeitversetzt ist.
    Wie aktuell sollen denn hier deine Daten sein?

    Wenn du nur alle Paar Tage eine änderung machst, ist das sicher ausreichend.
    Wenn da am laufenden Band neue Daten geschrieben werden, müsstest du live auf die Master zurückgreifen, bzw. kannst auch in dem Autoit Script prüfen ob es einen neuen Versionsstand gibt.

    Ich habe hier eine Master DB, wo wir dann bei einer Änderung, diese in eine Slave DB schreiben und alle Daten ersetzen.
    Du kannst auch bei einer Änderung eine Versionsnummer setzen und diese vom Autoit Script prüfen lassen. Wenn die sich erhöht hat, dann dem User eine Info geben, er möchte die DB Aktualisierung oder sein Script neu starten.

    Gruß gmmg

  • Zitat

    Ich habe hier eine Master DB, wo wir dann bei einer Änderung, diese in eine Slave DB schreiben und alle Daten ersetzen.

    So habe ich mir das auch gedacht. Nur die Slave DB kann ich ja nicht bei einer göffneten Anwendung für den jeweiligen User austauschen.

    Zitat von gmmg

    Du kannst auch bei einer Änderung eine Versionsnummer setzen und diese vom Autoit Script prüfen lassen. Wenn die sich erhöht hat, dann dem User eine Info geben, er möchte die DB Aktualisierung oder sein Script neu starten.

    Das ist eine nicht ganz komfortable Art. Deshalb ja Front und Back, weil sie miteinander verknüpft sind und jede Änderung in der Back gleich dem jeweiligen User mit der Frontkopie angezeigt wird.


    Zitat von wuff100

    mein Problem ist, daß ich nach dem Teilen der Access-Datenbank in eine Front-und Backenddatenbank, nicht auf die verknüften Tabellen in der Frontend zugreifen kann.
    Nur der erste Datensatz wird ausgelesen. Das Zugreifen auf die Backend
    läuft ohne Probleme und es werden alle Datensätze angezeigt.

    Wäre da dieses kleine Problem :( nicht, funktioniert es so.
    Vielleicht kanns du es mit der Access.au3 mal nachvollziehen, warum es nicht bei einer Verkünüpfung klappt.

    Oder ich habe da Denkfehler? ;(

  • Zitat von gmmg

    Ich habe hier eine Master DB, wo wir dann bei einer Änderung, diese in eine Slave DB schreiben und alle Daten ersetzen.

    Das ist die Idee, und jeder User bekommt eine SlaveDB. Lesen kann dann der User von seiner SlaveDB. :klatschen: