Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Datensätze in *.mdb updaten

Begonnen von kfx, April 20, 2011, 10:14:22

⏪ vorheriges - nächstes ⏩

kfx

Verehrtes Forum!

Wir sind im technischen Großhandel tätig. Wir haben eine Ersatzteilpreisliste mit gut 200.000 Positionen, die von unserem Lieferanten als *.mdb kommt und auch so bleiben muss, weil wir und unsere Kunden auf die darin enthaltenen Daten mit einem elektronischen Teilekatalog darauf zugreifen.

Bisher wurden Preisänderungen so gehandhabt, dass jedes mal eine CD mit der etwa 70MB großen Datenbank physisch verschickt wurde.

Eine elegantere und vor allem flexiblere und flottere Lösung wäre unser Ziel.

Gibt es eine Möglichkeit, eine Datei (*.mdb, *.xls, *.txt oder sonstwas), die befüllt ist mit nur den neuen Daten (in erster Linie die Teilenummer mit den geänderten Preisen), zu schicken und bei den Kunden quasi auf Knopfdruck in deren alte *.mdb einzuspielen? Es kann nicht davon ausgegangen werden, dass jeder Kunde über MS Access verfügt. Per ausführbarer Datei?

Für eure geschätzte Hilfe oder Denkanstöße wäre ich euch sehr verbunden!

kfx

MzKlMu

Hallo,
ZitatKunden quasi auf Knopfdruck in deren alte *.mdb einzuspielen? Es kann nicht davon ausgegangen werden, dass jeder Kunde über MS Access verfügt.
Das versteh ich jetzt nicht, wenn der Kunde eine Mdb hat, hat er auch Access, entweder als Vollversion oder als Runtime. Ohne Access geht mit einer Mdb nichts.
Gruß Klaus

kfx

Hallo,

danke für die Antwort.

Was ich damit sagen wollte, ist, dass nicht jeder unserer Händler die Vollversion von MS Access installiert hat und man auch nicht erwarten kann, dass der Händler selbst irgendwelche Schritte in MS Access ausführen kann.

Für manche ist es schon ein Hindernis, die *.mdb in den richtigen Ordner zu kopieren. Eine *.exe auf der CD doppelt anklicken (oder ähnliches) wäre für den Händler also der Idealfall.

Beste Grüße,
kfx

DF6GL

#3
Hallo,


was Du meinst, ist Deployment der DB. Dazu benutzt man an Besten ein Installer-Programm (Inno-Setup z. B.) oder auch den "Verpackungsassisten" (ab 2007 kostenlos) , mit dem die einzelnen Dateien (auch die Runtime) passend installiert werden können.


Im einfachsten Fall könnte man auch ein selbstentpackendes Archiv (mit z. B. WinRar) erstellen, das der Anwender als EXE ausführen und damit die Dateien entpacken/kopieren kann.

Sobald einmal die Runtime und die DB installiert wurde, reciht für weitere "Updates" lediglich das Überschreiben der alten MDB_Datei mit der neuen, wobei es sich hier ja nur um Updates von Daten handelt, die am Sinnvollsten nur als "Backend"-Datei (gesamte Db aufgeteilt in Frontend und Backend) verteilt werden braucht


Die jeweils neue (Backend-) Version könnte ja auch per FTP-Download von einem Web-Server heruntergeladen werden. Diese Funktionalität muss halt im Frontend entspr. programmiert worden sein.

ebs17

Eine MDB kann als Backend (Träger für Datentabellen) verwendet werden. Das hat dann erst einmal mit Access nichts zu tun, und es ist auch kein Access notwendig (auch nicht als Runtime).

Jet und DAO sind seit längerem Bestandteile von Windows und sollten auf einem üblichen Rechner vorhanden sein (oder könnten nachinstalliert werden).
Somit könnte man die vorhandene(n) Tabelle(n) in der MDB mit der genannten Tabelle per Abfragen updaten. Die Ausführung der Abfragen könnte ein kleines VBS-Script übernehmen.

Wesentlich für die Abfragen wäre ein eindeutiger Schlüssel (Teilenummer?).
Außerdem sollte der Pfad zur MDB bekannt sein  (ausschließlich Standardinstallation mit vorgegebenem Pfad?) oder ermittelbar sein.

MfGA
ebs

database

Hallo,

@ebs17

.... und meinst du nicht, dass es bei dem Aufwand nicht gleich g'scheiter wäre die kostenlose Runtime zu installieren um ordentlich mit der Access-Datei arbeiten zu können?
Speziell bei dem Hintergrund ...
ZitatFür manche ist es schon ein Hindernis, die *.mdb in den richtigen Ordner zu kopieren

;)

ebs17

Wie ich das lese, hat der "elektronische Teilekatalog" mit Access nichts zu tun. Er verwendet nur eine MDB als Datenbasis. Das nennt man wohl Backend. Der "ordentliche" Umgang mit den Daten wäre also bereits längst gewährleistet.

Hier geht es (nach meinem Verständnis) nur um eine Aktualisierung der Datenbasis - Preise ändern sich nun einmal - und evtl. um die Möglichkeit, die übermittelte Datenmenge (70 MB) zu reduzieren.

Ob es zum Ersetzen der alten MDB durch die neue notwendig ist, eine Runtime zu installieren: Die Frage möchte ich gerne zurückgeben. Für ein Darüberkopieren reicht eine Copy-Anweisung, für eine Aktualisierung wie oben beschrieben braucht man nicht viel mehr.

Also: Nein, ich meine nicht ...

kfx

Ja, es ist so, wie von ebs17 dargestellt.

Der elektronische Teilekatalog hat im Prinzip nichts mit Access zu tun sondern ist ein eigenständiges Programm. Er wird nur mit einer *.mdb "gefüttert".

Jedes Teil hat eine eindeutige Teilenummer.

Wonach kann ich denn suchen, wenn ich mich mit einem VBScript in diese Richtung beschäftigen möchte?

Besten Dank!
kfx

ebs17

Ein VBScript ist eine einfache Textdatei mit der Dateiendung VBS. Verwendungsfähig sind viele Anweisungen, die man aus VBA/VB kennt: ...asphelper.de/referenz/vbscript/ (das www kann ich als Gast hier nicht darstellen).
Achtung: Variablen werden nur einfach deklariert (ohne Datentyp). Verweise sind natürlich nicht möglich, zusätzliche Objekte wie z.B. DAO (für Abfrageausführung) müssen per Late Binding eingebunden werden.

Die größte Herausforderung bei der Aufgabe ist es, die Pfade der Ziel-MDB und der neuen Tabelle zu ermitteln. Jede Standardisierung (Festlegung) hilft da, vielleicht gibt es auch einen Registry-Eintrag.

Als Träger für die neuen Informationen würde ich zwei Varianten prüfen:
1) Eine CSV-Datei (Texttabelle) wegen der Schlankheit. Allerdings gibt es wohl Unterschiede in der Registry verschiedener Betriebssysteme (WinXP-W7), welches Zeichen standardmäßig als Delimiter verwendet wird, und Importspezifikationen wie in Access wären hier nicht oder evtl. nur recht umständlich handhabbar.
2) Eine MDB: Hier könnte die Tabelle sinnvoll indexiert sein, was bei der Ausführungsgeschwindigkeit der Abfragen sehr hilfreich ist, spürbar bei größeren Datenmengen.

Der Einfachheit halber könnte man auch die neue Komplett-MDB über die bestehende kopieren, alle Zugriffe auf das File-Backend müssen davor beendet sein (das versteht sich von selbst).

MfGA
ebs