Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: nurmikss am April 24, 2019, 15:56:16

Titel: "Servicemodul" zum "Anstöpseln" an verschiedene Datenbanken
Beitrag von: nurmikss am April 24, 2019, 15:56:16
Hallo zusammen,

ich bekomme immer wieder Datenbanken (aus Fachprogramm exportiert) mit gleicher Struktur, aber unterschiedlichen Inhalten. Die Inhalte soll ich nach verschiedenen Mustern analysieren, ggf. anpassen und die Datenbankinhalte wieder in die Fachanwendung importieren.
Dazu aktiviere ich jedes Mal den Verweis auf "Microsoft VBsript regular expressions", füge in der VBA-Oberfläche ein paar Funktionen hinzu, damit ich die regulären Ausdrücke dann nutzen kann und erstelle ein paar Abfragen. Bei jeder neuen Datenbank das gleiche Prozedere. Die Datenbanken haben immer neue Namen.

Eigentlich müsste es genügen, wenn ich die Vorarbeit nur einmal mache, in eine Art "Servicemodul" packe und dieses dann nur noch an die neu gelieferte Datenbank "anstöpsle". Man müsste nur angeben, wo der Stöpsel reinkommt - also wo die neue Datenbank ist und wie sie heißt.
Sofern das Servicemodul eigene Tabellen hat, muss vor dem Reimportieren in die Fachanwendung der "Stöpsel" wieder "gezogen" werden, da die Tabellenstruktur für einen erfolgreichen Reimport nicht verändert werden darf.

Kann mir jemand Tipps geben, wie ich das anpacke ?

P.S.: Bitte Bescheid sagen, wenn das Thema eher in ein anderes Unterforum gehört.
Titel: Re: "Servicemodul" zum "Anstöpseln" an verschiedene Datenbanken
Beitrag von: Beaker s.a. am April 24, 2019, 18:38:04
@nurmikss
Zitatalso wo die neue Datenbank ist und wie sie heißt.
Das lässt sich mit einem Filedialog doch einfach realisieren.
gruss ekkehard
Titel: Re: "Servicemodul" zum "Anstöpseln" an verschiedene Datenbanken
Beitrag von: PhilS am April 24, 2019, 19:21:59
Ich sehe hier zwei Möglichkeiten.

Wenn ich deinen Text richtig verstanden habe, dann befinden sich in den wechselnden Datenbanken ja nur Tabellen und sonst nichts. In dem Fall schließe ich mich @Beaker S.A. an. Du musst in dein "Tool-Frontend" immer nur die jeweilige Datenbank verknüpfen.

Wenn du mehr bearbeiten willst, als nur Daten, dann könntest du dein Service-Modul als Add-In programmieren, dass Arbeiten in andere Datenbanken ausführen kann. - Das ist allerdings etwas komplexer als die erste Option.
Titel: Re: "Servicemodul" zum "Anstöpseln" an verschiedene Datenbanken
Beitrag von: nurmikss am April 25, 2019, 17:55:20
Jetzt zeigt sich meine mangelnde VBA-Erfahrung  :-\:
Wie packe ich das an: Wie erstelle ich das Frontend ? Dort möchte ich ja keine neuen Tabellen generieren, sondern zunächst mal nur in einem Formular auf die ausgewählte Datei bzw. ausgewählte Tabellen  zugreifen. Eine neue Access-Datei anlegen, geht so nicht, denn dann wird von mir verlangt, dass ich zumindest eine Tabelle anlege.
Titel: Re: "Servicemodul" zum "Anstöpseln" an verschiedene Datenbanken
Beitrag von: MzKlMu am April 25, 2019, 19:18:21
Hallo,
Du legts eine neue Datenbank an, und dann verknüpfst die Access Tabellen der andern Datenbanken.
Dann kannst Du Formulare anlegen und die Tabellen wie direkt vorhandene Tabellen nutzen.

ZitatJetzt zeigt sich meine mangelnde VBA-Erfahrung
Mit VBA hat das nicht das geringste zu tun. Das sind ganz normale Standardfunktionalitäten von Access, da muss man nichts programmieren.
Titel: Re: "Servicemodul" zum "Anstöpseln" an verschiedene Datenbanken
Beitrag von: PhilS am April 25, 2019, 19:28:20
Zitat von: nurmikss am April 25, 2019, 17:55:20
Wie packe ich das an: Wie erstelle ich das Frontend ?
Wenn du die Komponenten deines "Servicemoduls" bereits hast, macht eine Kopie dieser Datenbank und lösche dann alle Tabelle. - Fertig.
Wenn du dann eine neue Tabellen-Datei bearbeiten willst, dann in deinem Servicemodul unter "Externe Daten" - "Access" -  "Verknüpfen" die Datendatei und darin deren Tabellen auswählen. - Das ist eine vereinfachte Abfolge, sollte aber das Prinzip verdeutlichen.
Jetzt hast du dein Servicemodul mit den aktuellen Datentabellen.
Die Datendatei kannst du nach deiner Bearbeitung dann an die entsprechende Stelle weiterleiten.
Bei der nächsten Datei zur Bearbeitung den hier beschriebenen Prozess dann einfach wiederholen. (Kopie am Anfang dann nicht mehr unbedingt nötig.)


Titel: Re: "Servicemodul" zum "Anstöpseln" an verschiedene Datenbanken
Beitrag von: nurmikss am April 26, 2019, 16:43:10
OK, ich habe meine Abfragen usw. in einer Datenbank angelegt und die Tabellen gelöscht. Bei Aufruf einer Abfrage kommt (natürlich) eine Fehlermeldung, dass die Tabellen fehlen. Nach Verknüpfung mit einer externen Access- Datei, die die Tabellen enthält, funktionieren die Abfragen.

Allerdings bleiben beim Schließen der Datei - auch ohne Speichern ! - die (über 100) Verknüpfungen bestehen und müssen für eine weitere Zuordnung manuell gelöscht werden ! Eine weitere Zuordnung würde die alten Zuordnungen nicht überschreiben, sondern einen neuen Satz Verknüpfungen (,,Tabellenname", ,,Tabellenname1", usw.) anlegen.

Wie kriege ich es hin, dass sie Verknüpfungen zu einer bestimmten Datei wieder verschwinden ? Ich brauche die Verknüpfungen ja nur temporär und danach die gleichen Verknüpfungen zur nächsten Datei usw.

Der Einfachheit halber habe ich beim Verknüpfen "alle" ausgewählt obwohl ich nur einen Teil der Tabellen brauche. Aber das Problem bleibt das gleiche, wenn ich 10 Tabellen löschen muss, die ich vorher manuell zugeordnet hatte.

Ich habe so eine Konstruktion schon mal mit einem anderen Datenbankprogramm gemacht, aber da kam beim Schließen der Datei die Frage, ob die Änderungen (nämlich die neuen Verknüpfungen) gespeichert werden sollen. Und der Endanwender konnte nur "nein" antworten, weil er keine Berechtigung für Programmänderungen hatte. Auch noch ein bisschen technisch, aber machbar.
Titel: Re: "Servicemodul" zum "Anstöpseln" an verschiedene Datenbanken
Beitrag von: Beaker s.a. am April 26, 2019, 16:57:53
@nurmikks
Private Sub EinName()
    Dim tdf As DAO.TableDef
    For Each tdf In CurrentDb.TableDefs
        If Len(tdf.Connect) > 0 Then
        'nur verknüpfte Tabellen
        DoCmd.DeleteObject acTable, tdf.Name
    Next tdf
End Sub

löscht alle verknüpften Tabelle aus der DB.
gruss ekkehard