Office: (Office 2016) Access-Datenbank in VBA auslesen

Helfe beim Thema Access-Datenbank in VBA auslesen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo Leute, ich werkele seit einiger Zeit an einem ziemlich umfangreichen Excel/VBA-Projekt. Es geht dabei um eine Art "App" für ein Brettspiel, das... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Jubeldibub, 23. April 2020.

  1. Access-Datenbank in VBA auslesen


    Hallo Leute,

    ich werkele seit einiger Zeit an einem ziemlich umfangreichen Excel/VBA-Projekt. Es geht dabei um eine Art "App" für ein Brettspiel, das ich entworfen habe. Diese App unterstützt dabei das Spiel in Form von Userform-Oberflächen über Excel, so dass der Spieler sowohl Figuren auf einem Spielbrett setzt, als auch auf diesen Oberflächen "spielt" und Spielwerte verwaltet.

    Problem ist nun, dass bisher jeder Spieler eine autarke Exceldatei (mit entsprechenden Dialogen per VBA/Userform) verwendet hat. Nunmehr bin ich aber dabei den nächsten Schritt zu machen und diese Dateien miteinander zu vernetzen.
    Hierzu ist es notwendig, dass jede Exceldatei möglichst in Echtzeit Daten von den anderen Excel-Dateien empfangen kann.
    Um das zu bewerkstelligen habe ich schon eine Weile mit freigegebenen Excel-Dateien experimentiert. Unterm Strich: Es funktioniert damit, ist aber unperformant, unsicher (Abbrüche wegen gleichzeitiger Zugriffe) und mit einiger Sicherheit komplett unelegant. Das ungünstigste daran ist, dass ich geänderte Daten in der freigegebenen Excel-Datei nur "übermitteln" kann, wenn ich diese speichere.
    Das heißt: Spieler 1 ändert etwas in der zentralen Datei, muss speichern, Spieler 2 will die neuen Daten abrufen, muss wieder speichern, um diese zu erhalten. Potenziert man das auf 4-6 Spieler und setzt voraus, dass sie möglichst mindestens im 2 Sekundentakt die neuen Daten voneinander brauchen, hat man tausende Speicherzugriffe und oft auch Performanceprobleme durch den gleichzeitigen Zugriff und das verzögerte Speichern.

    Daher die Frage: Wäre so etwas einfacher bzw. besser mit einer Access-Datenbank zu regeln? Also könnte ich (möglichst einfach und performant) die auszutauschenden Daten an eine zentral im Netzwerk abgelegte Access-Datenbank schicken und die Daten dann von dort wieder von den verschiedenen PCs (es sind Windows-10-Tablets) aus abrufen?
    Es würde sich um ca. 500-1000 Excel-Zellinhalte handeln, die ich zwischen den einzelnen Excelblättern austauschen müsste. Wenn möglich, dann in Echtzeit, da das Spiel auch eine Funktion haben soll, indem man rundenweise auf seine Mitspieler wartet (also nur in den Userform-Dialogen weiterkommen soll, wenn alle anderen Spieler die Runde abgeschlossen haben).

    Ich hoffe, ihr könnt mir helfen!

    :)
     
    Jubeldibub, 23. April 2020
    #1
  2. Excel, Access ist doch im Prinzip alles völlig ungeeignet.
    VBA ist nicht zum Programmieren gedacht (ich wollte das auch lange nicht akzeptieren).
    Da geht es doch nur um einfache Automatisierungen der VBA Objekte - für sinnvolle Entwicklungen unbrauchbar, mal ganz abgesehen von der langsamen Codeausführung.

    Mein Rat.
    Entscheide dich für eine Programmiersprache einer Entwicklungsumgebung.
    Schau dir die verschiedenen Programmiersprachen an.
    .net, Java, Delphi usw. - ist ja eh alles kostenlos - und begib dich in die Entwicklerforen.
    Investiere zuerst Zeit in die Grundlagen - sonst braucht du viel zu lange.
     
    markusxy, 25. April 2020
    #2
  3. Hallo Markus,

    danke für den Rat, das hatte ich mir auch schon mal überlegt. Allerdings ist die "App" in VBA bei mittlerweile mehreren tausend Zeilen und ca. 50 Userformen mit teils komplexem Code.
    Fürs Erste habe ich schlichtweg keine Zeit, dies alles in eine andere Programmiersprache zu übersetzen und diese nebenbei auch noch zu lernen (wobei ich nicht mal absehen kann, welche Sprache geeignet wäre, so dass ich am Ende vielleicht auch noch Zeit für eine Übersetzung aufbringe, die am Ende dann nicht mal zufriedenstellend trägt).

    Von daher würde ich gerne zur Ausgangsfrage zurückkehren: Gibt es in der Kombination Access/Excel eine Möglichkeit, um Daten zentral abzulegen (und möglichst in Echtzeit zu aktualisieren) und dann von mehreren Endgeräten aus abzurufen?
     
    Jubeldibub, 25. April 2020
    #3
  4. Access-Datenbank in VBA auslesen

    Hallo,
    mit Excel VBA wirst Du bei Access so gut wie nix anfangen können.
    Beide VBA Dialekte sind auf die jeweilige Anwendung zugeschnitten und nur bedingt nicht vergleichbar.
    Auch Userforms gibt es bei Access nicht.

    Im Prinzip ja, die Tabellen auf den Server als Backend und der Rest in das Frontend. Jeder User braucht auch sein eigenes Frontend auf seinem PC. Das heist, jeder User braucht auch Access mindestens als Runtime. Die Tabelle auf dem Server werden dann im Frontend verknüpft.
     
    gpswanderer, 25. April 2020
    #4
  5. Hi,

    die Userformen und VBA-Code brauche ich bei Access (nach meiner jetzigen Vorstellung) nicht. Ich wollte Access einfach als Datenbank nutzen, um von da aus Daten ins Excel abzurufen (weil eine datenbankähnliche Verwaltung innerhalb von Excel, mit freigegebenen Arbeitsmappen, nicht wirklich gut funktioniert).

    Das mit dem Front- und Backend hatte ich schon einmal gelesen, als ich nach Möglichkeiten zum Auslesen von Access-Daten gegooglet habe. Das jeder am Spiel teilnehmende PC (d.h. jedes Tablet) Access bekommt, ist kein Problem (bereits vorhanden).
    Was ich aber noch nicht ganz verstehe: Ich würde auf einem NAS die zentrale Datenbank in Access ablegen wollen. Das Backend, wenn ich dich richtig verstehe. Dort werden die Daten verändert (von den Tablets) und von dort werden die Daten auf die Tablets abgerufen.
    Wenn ich dich richtig verstanden habe, liegt auf den Tablets dann ein "Frontend" der Access-Datenbank, die auf dem NAS liegt. Aber wie bekomme ich dann die Daten aus diesem Frontend in die Excel-Mappen auf den Tablets?
     
    Jubeldibub, 25. April 2020
    #5
  6. Hllo,
    die Frage musst Du im Excelforum mal stellen.
     
    gpswanderer, 25. April 2020
    #6
  7. Schaust du hier.
     
    Beaker s.a., 25. April 2020
    #7
  8. Access-Datenbank in VBA auslesen

    Die Excel ist das Frontend. Wozu sollte ein Access-Frontend gut sein.
     
    fredfred, 25. April 2020
    #8
  9. Hallo,

    ich habe mal ein wenig herumexperimentiert und jetzt zumindest einen Ansatz, wie ich es in der Kombination Excel/Access machen könnte.

    Es gibt die Hauptdatei ("Spiel_Haupt_Spieler1.xlsm") für das Spiel auf jedem Tablet.
    Zusätzlich gibt es auf jedem Tablet eine Nebendatei ("Spiel_Daten_Spieler1.xlsb"), in der ich die Daten ablege, die ausgetauscht werden sollen. Das Ablegen dieser Daten geschieht über absolute Zellbezüge zur Hauptdatei, dadurch ist die Nebendatei immer vollautomatisch aktuell. Die Nebendatei ist freigegeben, damit Access diese bei einem Zugriff nicht sperrt.
    Zudem gibt es eine zentral abgelegte Access-Datenbank auf meinem FritzBox-NAS ("Spiel_DB.accdb").

    Die Access-Datenbank hat Verknüpfungen zu allen Nebendateien ("Spiel_Daten_Spieler1.xlsb", "Spiel_Daten_Spieler2.xlsb" etc.), greift also über das Netzwerk in die Nebendateien auf allen beteiligten Tablets. Daraus erstellt sie eine Abfrage, in der alle Daten für alle Spieler nebeneinander aufgelistet werden.

    Die Hauptdatei auf jedem Tablet hat über "externe Daten abrufen" eine Verbindung zur Access-Datenbank. Dadurch kann das Ergebnis der Abfrage über alle Spieler jederzeit in diese Hauptdatei geschrieben werden (in dem man die externe Datenquelle aktualisiert).

    Nun habe ich in VBA einfach den Befehl "ActiveWorkbook.RefreshAll" genutzt, um bei Bedarf (das ist in manchen Spielphasen nur bei einem bestimmten Ereignis und in manchen Spielphasen jede Sekunde) die neuesten Daten von allen Spielern abzurufen.
    Wenn ich von einem Tablet aus aktualisierte Daten an die Access-Datenbank schicken will (so dass alle Spieler diese abrufen können), speichere ich die freigegebene XLSB-Nebendatei. Dadurch greift die Access-Datenbank automatisch beim nächsten Zugriff der anderen Spieler auf diese neuen Daten zu.

    Leider stolpere ich dabei aber über ein Problem: Wenn ich die Access-Datenbank auf den Tablets im Excel 2016 einbinden möchte, bekomme ich nur die Meldung "Die Datenquelle enthält keine sichtbaren Tabellen". Ist das ein Problem der Access-Datenbank oder mache ich etwas in Excel falsch?
    Auf dem Tablet, mit dem ich es bisher versucht habe, ist Access noch nicht installiert. Verursacht das das Problem?
     
    Jubeldibub, 26. April 2020
    #9
  10. Hallo,
    Stand schon hier:#4
    Gruß
    Rainer
     
  11. Sorry, war eine Geistermeldung von mir. Ich habe das Problem nicht mehr, vermutlich hatte ich irgendwo eine vermurkste Einstellung gemacht.

    Seltsamerweise komme ich wohl auch ohne Access-Runtime aus. Zumindest kann ich nun vom Tablet in Excel die Access-Abfrage einbetten und mir die Rückgabewerte über "Alle aktualisieren" geben lassen.
    Ich werde Access trotzdem gleich mal installieren, denn das Abrufen ins Excel dauert quälend lange, wenn die Datenbank nicht nebenher im Access offen ist.

    Eine Sache ist jedoch seltsam: Wenn zwei Rechner gleichzeitig auf die Access-Datenbank zugreifen, öffnet sich automatisch die im Access verknüpfte Tabelle des einen Tablets. Kann sich das einer erklären?
     
    Jubeldibub, 26. April 2020
    #11
  12. \@erpe:
    nicht zwangsläufig, weil ja nur Excel als "Frontend" genutzt werden soll. Da reicht die Datenbankengine, welche man auch separat herunterladen kann.

    Aber das Ganze ist eh zum scheitern verurteilt, weil das Konzept mit einer DB auf dem NAS und den verknüpften externen Tabellen auf den Tabletts schon murks ist. Da hat jemand nicht verstanden, was eine DB ist und wie sie verwendet wird.

    Für diese Anwendung hätte man besser auf ein Webinterface umgestellt.

    Ulrich
     
    knobbi38, 26. April 2020
    #12
  13. Access-Datenbank in VBA auslesen

    Stark! Oder man erklärt diesem "jemand" einfach, was das bedeutet und was "er" besser machen könnte, anstatt arrogant über ihn, in dem von ihm gestarteten Thread, in der dritten Person zu reden.

    Ist das hier üblich im Forum? Dachte immer es hätte sich so etwas wie Etikette in derartigen Hilfeforen durchgesetzt *rolleyes.gif*

    Wie dem auch sei: Das Problem mit der sich automatisch öffnenden Datei hat sich nun auch erledigt. Ich hatte einfach vergessen, eine Freigabe bei einer der XLSBs zu setzen.
     
    Jubeldibub, 26. April 2020
    #13
  14. Hallo Jubeldibub,

    Entschuldigung, aber im ersten Beitrag hast du von einer zentralen Datenhaltung gesprochen und dann sprichst du von verknüpften Tabellen auf Tabletts. Da ich nicht weiß, wer den Vorschlag gemacht hat oder ob du da selber darauf gekommen bist, habe ich in der "dritten Person" gesprochen. Wenn der Vorschlag/Idee von dir gekommen ist, musst du dir den Schuh schon selber anzuziehen und das hat auch nichts mit "Arroganz" zu tun, denn dann hast du deine "Hausaufgaben" bezüglich dessen, wie DBs funktionieren und eingesetzt werden, nicht gemacht.

    Zentrale Datenhaltung ist ja erstmal prinzipiell eine gute Idee, aber das heißt doch auch, das alle Daten von dort gelesen und nach einer Veränderung auch wieder dorthin zurückgeschrieben werden. Was braucht man da noch lokale Tabelle?

    Und deine Fritzbox als NAS ist jetzt auch nicht, was die Performance betrifft, berauschend.

    Das sind alles Eckdaten, die du nochmal überdenken solltest. Schau dir einfach mal den Datenfluss an und versuche zu optimieren, wo welche Daten wann benötigt werden. Es gilt, den Datenfluss zu minimieren. Nur so kommst du, wenn überhaupt zu einem brauchbaren Konzept. Ap*ro*pos Datenfluss - Datenbankverbindungen über WLAN laufen nicht sehr stabil und Access reagiert auf Leitungsstörungen sehr empfindlich.

    Das Forum kann dir Hilfestellungen bei einzelnen Problemen geben, aber ein Konzept zu entwickeln und die grundlegende Umsetzung dessen ist zunächst mal deine Aufgabe.


    Gruß Ulrich
     
    knobbi38, 26. April 2020
    #14
  15. Hallo Knobbi,

    erst mal danke für die ausführliche Antwort.

    Das stimmt, da gab es bei mir inzwischen einen Sprung im Ansatz. Beim Erstellen des Threads dachte ich, es wäre eine gute Idee, dass jedes Tablet in eine zentrale Access-Datenbank schreibt. Allerdings schien mir der Zugriff auf die Access-Datenbank per VBA (aus dem Excel heraus) nach den ersten Antworten sehr komplex, zumal ich vermutete, dass die Performance eher mau sein würde (weil sich die Tablets bei Netzwerkzugriffen generell etwas schwer tun).
    Dann bin ich über die Funktion im Access gestolpert, dass man Tabellen ja nicht nur fest einlesen, sondern auch einfach verknüpfen kann. Sie aktualisieren sich somit bei jedem Zugriff selbst (was schon mal eine große Erleichterung war). Gleichzeitig hatte ich gesehen, dass man im Excel wiederum Access-Datenbanken als externe Daten direkt einbinden kann.
    Daher hatte ich einfach mal einen Schnellschuss probiert, ob ich so (einigermaßen performant) die Daten von jedem Tablet an eine zentrale Stelle schicken und von dort dann die gebündelten Daten aller Spieler wieder abrufen kann. Das hatte ich versucht oben in #9 zu erläutern (wobei ich mich sicher sehr laienhaft ausgedrückt habe).

    Da hast du vollkommen Recht und das treibt mich gerade auch noch um. Ich werde da mal in den kommenden Tagen/Wochen schauen, dass ich mir irgendetwas schnelleres hole. Vielleicht läuft es dann noch etwas runder.

    Das werde ich machen. Leider bin ich kein VBA-Profi (auch wenn ich mir mittlerweile ein bisschen Wissen durch das Erstellen dieser Spiele-"App" angeeignet habe), daher brauche ich meist gehörig Zeit, um mich in Codes einzulesen (vor allem, wenn sie viel für mich Neues beinhalten, wie das Beispiel oben, wo der VBA-Zugriff auf Access beschrieben wurde). Die fehlt mir nur leider gerade, daher suchte ich erst mal (mindestens für den Übergang) nach einer zügiger umzusetzenden Lösung.

    Danke für den Hinweis. Ich vermute, ob mein Ansatz jetzt als Übergangslösung trägt, werde ich erst beim nächsten Feldtest mit mehreren Spielern sehen. Alleine um vier Tablets herumlaufen und "Last" auf die Datenbank ausüben ist immer etwas stressig *wink.gif*

    Falls generell noch jemand einen relativ einfach umzusetzenden Vorschlag hat, wie man die Daten zwischen den Tablets austauschen kann, sagt gerne Bescheid.
    Ich melde mich auf jeden Fall, wenn ich weiß, ob es nun funktionierte und wie gut.
     
    Jubeldibub, 26. April 2020
    #15
Thema:

Access-Datenbank in VBA auslesen

Die Seite wird geladen...
  1. Access-Datenbank in VBA auslesen - Similar Threads - Access Datenbank VBA

  2. Auslesen Windowsbenutzer in einer Datenbank

    in Microsoft Access Hilfe
    Auslesen Windowsbenutzer in einer Datenbank: Hallo zusammen, wie kann ich auslesen, welcher Windows Benutzer gerade aktuell in einer Datenbank ist? Geht das? Danke Matthias
  3. Access-Datenbank von ander Acc-DB fernbedienen?

    in Microsoft Access Hilfe
    Access-Datenbank von ander Acc-DB fernbedienen?: Hallo, ich prüfe von Datenbank A aus, ob zu den eingegebenen Daten ein passender Datensatz in einer anderen Datenbank ist (verknüpfte Tabelle). Nun würde ich gerne mit einer Schaltfläche die...
  4. Datenbank erstellung

    in Microsoft Access Hilfe
    Datenbank erstellung: Hallo, da ich mich nicht so gut mit Access auskenne, wollte ich mal fragen, ob es hier jemanden gibt der mir Helfen kann bzw eine erstellen kann. Vielen Dank
  5. MS ACCESS Insert into Foto in Datenbank

    in Microsoft Access Hilfe
    MS ACCESS Insert into Foto in Datenbank: Hallo. Ich benutze MS ACCESS im Office 365. Habe eine Anwendung geschrieben, in der in einem Formular ein Foto im Typ Bild dargestellt wird. Ich möchte nun dieses Foto mittels einem "Insert...
  6. VBA Zugriff auf 32 Bit Access Datenbank von 64 Bit Anwendung

    in Microsoft Access Hilfe
    VBA Zugriff auf 32 Bit Access Datenbank von 64 Bit Anwendung: Hallo Zusammen, Seit heute habe ich folgendes Problem: Ich habe mit Access und ProgeCad eine GIS-Anwendung erstellt. Ich greife dabei von Access aus auf ProgeCad zu und umgekehrt. Von ProgeCad...
  7. Unter Access 2010 per VBA die akt. Datenbank kompr. u. rep.

    in Microsoft Access Hilfe
    Unter Access 2010 per VBA die akt. Datenbank kompr. u. rep.: Hallo Leute, ich habe hier ein Problem: Ich setze seit ein paar Tagen MS-Access 2010 ein (und kann auch nicht zurück, leider leider ...). Nun möchte ich aus dem VBA-Programmcode zwei Befehle...
  8. Access VBA-Modul: aktuelle Datenbank mit ADO ansprechen

    in Microsoft Access Hilfe
    Access VBA-Modul: aktuelle Datenbank mit ADO ansprechen: Hallo zusammen! Ich habe eine mit Access erstellte Datenbank, in die ich ein Modul eingefügt habe. In dem Modul wird mit ADO auf die Datenbank zugegriffen. Set adoCN1 = New ADODB.Connection...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden