Office: Beispiel für automatisches mdb Update mittels Batch-Datei

Helfe beim Thema Beispiel für automatisches mdb Update mittels Batch-Datei in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich möchte mit mal erlauben, euch hier ein Beispiel zu geben, wie wir das Problem mit den ständig neuen Versionen und Updates in der... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Fynbos, 19. Juni 2004.

  1. Beispiel für automatisches mdb Update mittels Batch-Datei


    Hallo zusammen,

    ich möchte mit mal erlauben, euch hier ein Beispiel zu geben, wie wir das Problem mit den ständig neuen Versionen und Updates in der Firma gelöst haben.

    Ich habe den Lösungsansatz hier aus dem Forum, wie man sehen kann, ist das Original-C immer noch in der Datei.
    Soviel Ehrlichkeit ist Pflicht. *Smilie

    Zuerst zur Erklärung:
    Auf Basis von Access haben wir in der Firma eine Art Kundendatenbank.
    Da sich diese aber ständig erweitert und wir es leid waren, ständig an 30 Leute eine 5 MB-Große .mdb zu schicken (...die Outlook ja dann eh abblockt *wink.gif* ) und wir über eine gute Standleitung verfügen, haben wir uns also gesacht, wir bauen was ein, damit die Leute immer die neuste Version nehmen müssen.
    Denn leider tauchten auch da Probleme auf, wenn die User nicht die Updates ausführen.

    Die Lösung: Eine Server-Seitig gelagerte Batch-Datei, die vom User zum Programm-Start aufgerufen wird, welche dann die aktuelle Version überprüft und dann evtl ersetzt.

    Folgende Probleme wollten wir vermeiden:
    - Die anderen Niederlassungen haben nur DSL, sind also im Download recht langsam und brauchen für 5 MB halt ihre Zeit. Und User rufen ein Programm ja immer erst auf, wenn es schnell gehen soll.
    - Die User sollen nicht noch groß JA oder Nein anklicken müssen.
    - Wir bestimmen wann ein Update laufen soll und wann nicht.
    - Es sollte keine extra-Versionsdatei geben, warum immer 2 Dateien bei einem Update ändern, wenn auch 1 reicht?
    - Die Dateien sollen immer im selben Verzeichnis sein, das nannten wir einfach mal "FrontEnd" unter dem Laufwerk C.
    - Ein eigenes Programm-Icon wäre nicht schlecht. *wink.gif*

    Und so ist es gelöst:
    - Zuerst haben wir ein Netzwerklaufwerk auf den User-Rechnern angelegt, in diesem Fall das LAufwerk T. Es wird automatisch beim Start angemeldet und verweist auf das Verzeichnis auf dem Server, wo die Dateien liegen.
    - Dort liegen zum einen die Batch-Dateien, auf die dann einfach per Verknüpfung (auf z.B. "T:\tub.bat") verknüpft wird.
    - Außerdem liegen im selben Verzeichnis auf dem Server die mdb-Dateien, die der User dann benutzen soll, die allerdings lokal erst auf den User-Rechner gesaugt werden.

    Das Batch-Programm (anbei) macht nun folgendes:
    1. Es setzt die Variablen für die Verzeichnisse, die Version etc fest.
    2. Es checkt, ob das Zielverzeichnis auf dem User-Rechner da ist. (hier: c:\FrontEnd\Theseus)
    3. Wenn nicht, erstellt es es.
    4. Es vergleicht die aktuelle Versionsnummer auf dem Server mit dem auf dem Zielrechner
    5. Wenn diese nicht gleich sind, löscht es die alte Version auf dem Userrechner.
    6. Dann kopiert es die Neue Version vom Server auf den Userrechner und gibt dazu eine Meldung aus, damit der User nicht ungeduldig wird.
    7. Es startet das Programm.
    8. Falls die Versionen gleich sind und das Programm nicht updaten muss, startet es direkt die Access-Datei.
    9. Es löscht alle alten Variablen und schließt sich.[/list=1]

      Der Trick ist nun folgender:
      Um eine neue Version freizuschalten, muss man nicht mehr machen, als diese auf den Server zu kopieren und nur die Versionnummer (hier 138) ändern.
      Das dauert keine 10 Sekunden und schon ziehen alle User, sobald sie das Programm neu starten (z.b. morgens, wenn die Rechner hochfahren) automatisch die neuste Version.

      DER HAKEN!!!
      Es gibt nur einen Haken an der Sache:
      Die Command-Zeile, die das Programm startet, unterscheidet sich bei den alten Systemen wie Win95 und 98, und neueren wie XP und 2000.
      Hat was mit der Command-Struktur in DOS zu tun, ist aber auch relativ egal, denn alles was man machen muss ist:
      2 Batch-Dateien, eine für alte Rechner (hier "tub.bat") und eine für die neueren (hier: "tub_xp.bat").
      Je nach Rechner muss man dann halt die richtige aussuchen.
      (Kleiner Tip: wir haben deswegen endlich alle alten Kisten ersetzt, einfach lange genug bei der Geschäftsführung quengeln. *wink.gif* )

      Achja, nochwas: Das Icon:
      Das kann man ja nun einfach auf dem Server lagern und dann unter Access bei Start halt einfach "T:\icon.ico" angeben.


      Ich hoffe das hilft dem ein oder anderen, wir ihr in den Dateien seht, ist die Grundidee zu dem kleinen Code von Carsten Pache, wir haben nur die Sache mit den Versionsdateien geändert.

      Gruß
      Fynbos

      PS: Wer Fragen oder Ideen hat: Immer her damit.
      Als ob wir schon alles wüßten... *wink.gif*

      :)
     
    Fynbos, 19. Juni 2004
    #1
  2. Hallo zusammen,

    gestern Abend bei einer Flasche Reisschnaps kam mir dann doch noch eine Idee, wie man das ganze verbessern kann:

    Komprimieren!

    Ich erinnerte mich an die gute alte Zeit, als wir zip-dateien noch unter DOS entpackt haben (nix mit GUI) und überlegte wie man die mdb-Dateien noch kleiner machen kann.
    Und da fiel es mir wie Schuppen aus den Haaren:

    Einfach die Dateien für die Übertragung komprimieren.

    Also habe ich mir von www.winrar.de die kostenlose unrar.exe besorgt, mit dessen Hilfe man im Command-Zeilen-Modus .rar-Dateien entpacken kann.

    (Ich vertraue nur auf RAR, ZIP mag ich einfach nicht. Ist aber wohl Gefühlssache... *Smilie )

    Dazu habe ich dann einige Zeilen in die Batch-Datei gebaut und nun schickt das Prog nach der Prüfung ob es eine neue Version gibt, diese gepackt rüber und entpackt diese dann.
    Zudem löscht es anschließend die gepackte, übertragene Datei.

    Damit lässt sich eine MDB in der Regel nochmal um 85% verkleinern!
    = weinger Wartezeit bei der Übertragung!

    Im Anhang befinden sich wieder die beiden Batch-Dateien in geänderter Form und außerdem nochmal der Link zu der .exe


    Gruß
    Fynbos

    PS: Bitte gebt doch mal eure Meinung dazu ab... *frown.gif*
     
    Fynbos, 21. Juni 2004
    #2
  3. Einen kleinen Schönheitsfehler bzw ein Problem habe ich entdeckt.

    Du kopierst immer eine mdb mit namen, welche sich aus "tub" und der versionsnummer zusammensetzten (z.b. tub-138.mdb)
    was ist nun aber, wenn jemand eine Verknüpfung auf den desktop legt ?
    Er hat dann ein Verknüpfung zu "tub-138.mdb" die neue version heisst dann aber "tub-0815.mdb"
    --> Verknüpfung tot
     
    lordofchaos, 23. Juni 2004
    #3
  4. Beispiel für automatisches mdb Update mittels Batch-Datei

    "Schuld eigen" würde ich sagen. Es sollte laut Anleitung nur ein Desktop-Link zur Batch-Datei angelegt werden, dann sollte es klappen.
     
    Arne Dieckmann, 23. Juni 2004
    #4
  5. *Smilie So ist es.
    Die Verknüpfung auf dem Desktop zielt nur auf die Batch-Datei auf dem Server, also über das Netzlaufwerk T auf T:\tub_xp.exe

    Genau das ist ja der Trick, so muss bei einer neuen Version stets nur in der Batch-Datei die neue Versionsnummer eingegeben werden.
     
    Fynbos, 23. Juni 2004
    #5
  6. Hab ich wohl nicht richtig gelesen :=)

    Warum gibst du als Server-Pfad nicht \\Server\Verzeichnis\Datei.bat an ?
    Dann ist eine Anmeldung eines Netzlaufwerks nicht nötig

    @arne
    "Schuld eigen" ??
     
    lordofchaos, 23. Juni 2004
    #6
  7. \@Freddy: Ich muss mir wohl so etwas abgewöhnen. Ich dachte, dass man diesen Spruch auch in München kennt. *wink.gif*
    Ich könnte auch "Selber schuld" schreiben. *bye
     
    Arne Dieckmann, 23. Juni 2004
    #7
  8. Beispiel für automatisches mdb Update mittels Batch-Datei

    \@Arne
    Also ich kannte den Spruch nicht *Smilie
    Aber selber Schuld bin ich nicht *g* ich habs ja nicht verwendet ! *nene
     
    lordofchaos, 23. Juni 2004
    #8
  9. Kannte ich auch noch nicht.

    Um ehrlich zu sein, gibt es keinen trifftigen Grund, warum wir Netzlaufwerke nehmen. *wink.gif*
    Aber irgendwie habe ich das Gefühl, dass das sauberes arbeiten ist.
    Oder irre ich da irgendwie?
     
    Fynbos, 24. Juni 2004
    #9
  10. also ich finde nen direkten Pfad besser.
    Vorallem muss nicht bei jedem ein Netzlaufwerk eingerichtet werden und somit kann auch keiner aus versehen oder absicht auf dem Laufwerk rumspielen.
    Das Anmelden beim Start funktioniert ja auch nicht anders
     
    lordofchaos, 24. Juni 2004
    #10
  11. Wir schreiben das Sommerloch 2004 und schon kommen gelangweilte Admins, die Doom3 schon durch haben, auf die Idee:

    Verbessern wir das ganze doch nochmal... *wink.gif*

    Wie sich heraus stellte, wurde auf den Clients in den Außenstädten das runterladen zwar unkompliziert gehandelt, aber das Programm, speziell das Entpacken, wurde doch tatsächlich immer noch auf dem Netzlaufwerk ausgeführt!
    Und das kostet immer noch etwas unnötige Zeit. *frown.gif*

    Lösung:
    Die Batch-Datei liegt nun also komplett auf dem Client, aber die Versionsnummer alleine (also das, was sich ständig ändert) ist auf dem Server gelagert.
    Und das geht am besten mit dem fast vergessenen Basic-Befehl: CALL

    Es gibt nun also 2 Dateien:
    - Die eine ist die Datei, die das ganze vergleichen, löschen, kopieren und starten des Programmes übernimmt,
    - die andere hat nur die Versionsnummer als Variable hinterlegt und wird mit dem CALL-Befehl aufgerufen.

    Erstere liegt beim Client, da sie sich ja nie ändert. (tub_xp.bat)
    Zweitere auf dem Server, in dem Zielpfad. (tub_ver.bat)

    Ich habe die beiden Dateien im Beispiel angehängt.

    Fragen?
    Fragen!
     
  12. Hallo zusammen. Da ich ja mit meiner Netzwerk-Variante (alle greifen auf ein und das selbe FE zu) auf die Fresse geflogen bin, wollte ich mich hier dieser Lösung bedienen. Aber irgendwas mache ich wohl noch falsch. Ich habe die Variablen entsprechend geändert und die Batch-Datei gestartet jedoch tut nach dem Hinweis das jetzt die neue Version kopiert wird nichts mehr. Also habe ich mir mit Hilfe des Echo Befehls alle Variablen mal anzeigen lasse und siehe da die Versionsnummer, sowie der Server-Pfad sind "Leer". Ich habe aber 001 bzw. \\PC-Server\Daten\ordner eingetragen ???????????????

    ati
     
  13. Beispiel für automatisches mdb Update mittels Batch-Datei

    Mhm, welche von den verschiedenen obrigen versionen nimmst du denn?
    Zeig mal die Dateien, vieleicht finde ich den Fehler.

    Jetzt so auf anhieb solltest du vieleicht gucken, ob du nicht einfacher mit der Server-IP arbeiten kannst, also z.B.: \\192.168.0.100\Daten\order

    Gruß *Smilie
     
  14. *mad.gif* Also hier nochmal der ganze Code mit meinen Änderungen:

    :: ----- START -----

    @echo off
    ::Befehlszeilenaugabe aus

    :: Microsoft Windows NT 4
    :: Microsoft Access 97
    ::
    :: Carsten Pache, 1999
    :: Modifiziert Florian T. Rose, 2004
    :: Modifiziert Markus Weinrich, 2004

    ::Variablen deklarieren
    SET FrontEndVersion=100
    SET FrontEndPfad=C:\Fohrer
    SET FrontEndProg=test

    SET ServerPfad=W:\Fohrer


    :: Screen löschen
    CLS
    echo Pfad %FrontEndPfad%
    echo Prog %FrontEndProg%
    echo Ver %FrontEndVersion%
    echo Ser %ServerPfad%



    ::Ist das Verzeichnis auf diesem Rechner bereits vorhanden?
    ::JA --> nichts tun
    ::NEIN --> Verzeichnis anlegen
    IF NOT EXIST "%FrontEndPfad%\*.*" MD "%FrontEndPfad% " > nul




    ::Existiert die aktuelle Version bereits auf diesem Rechner?
    ::JA --> Programm starten
    ::NEIN --> Programm vom Server auf den Rechner kopieren
    IF EXIST "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.mdb" GOTO PROGRAMMSTART

    ECHO ***
    ECHO *** alte Versionen werden gelöscht ...
    ECHO ***
    IF EXIST "%FrontEndPfad%\%FrontEndProg%*.mdb" DEL "%FrontEndPfad%\%FrontEndProg%*.mdb"

    ::MDB-Datei vom Server auf den aktuellen Rechner kopieren
    ECHO ***
    ECHO *** Kopiere "Test %FrontEndVersion%" vom Server...
    ECHO *** Bitte einen Moment Geduld! (Dieser Vorgang kann einige Minuten dauern)
    ECHO ***
    IF EXIST "%ServerPfad%\%FrontEndProg%-%FrontEndVersion%.mdb" COPY "%ServerPfad%\%FrontEndProg%-%FrontEndVersion%.mdb" "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.mdb">nul



    :PROGRAMMSTART
    IF EXIST "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.mdb" START "%FrontEndPfad%\%FrontEndProg%-%FrontEndVersion%.mdb"



    ::Variablen loeschen
    SET FrontEndVersion=
    SET FrontEndPfad=
    SET FrontEndProg=
    SET ServerPfad=

    :: ----- ENDE -----


    Was mich stutzig macht ist das das Programm von vier Variablen immer nur zwei speichert. D.h. ändere ich die Variablen in ihrer reihenfolge, so zeigt er mir immer nur die ersten beiden an *mad.gif*
     
  15. Also, ich habe mal eben den Text hier kopiert und in eine bat geschrieben.
    Die Variablen zeigte er soweit alle 4 richtig an bei mir, keine Probleme.

    Allerdings mußte ich auf dem Netzlaufwerk W: erstmal das Verzeichnis \Fohrer anlegen, ist das Absicht?
    Falls ja, ok.

    Dann habe ich ne fohrer-100.mdb in dieses Verzeichnis gelegt und es ging alles problemlos.

    Er hat das Verzeichnis auf C gemacht, dann kopiert und dann gestartet, bzw wollte starten, aber ich habe hier XP und daher ging der Start-Befehl bekannterweise in dieser Art nicht.

    Tip: Mit dem Befehl "pause" kann man das Programm an der Stelle anhalten und durch drücken der Leertaste weiterlaufen lassen.
    Das kombiniert mit "ohne echo off" sollte dir helfen...
     
Thema:

Beispiel für automatisches mdb Update mittels Batch-Datei

Die Seite wird geladen...
  1. Beispiel für automatisches mdb Update mittels Batch-Datei - Similar Threads - Beispiel automatisches mdb

  2. Beispiele für häufig verwendete Formeln

    in Microsoft Excel Tutorials
    Beispiele für häufig verwendete Formeln: Beispiele für häufig verwendete Formeln Excel 2010 Mehr... Weniger Die folgende Tabelle enthält Links zu...
  3. Erstellen einer Spalte aus einem Beispiel

    in Microsoft Excel Tutorials
    Erstellen einer Spalte aus einem Beispiel: Erstellen einer Spalte aus einem Beispiel Excel für Microsoft 365 Microsoft 365 Business Mehr... Weniger...
  4. Beispiele für Ausdrücke

    in Microsoft Access Tutorials
    Beispiele für Ausdrücke: Beispiele für Ausdrücke Access für Microsoft 365 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Mehr... Weniger...
  5. Treeview... suche Tipps, Literatur, Beispiele & Erklärungen

    in Microsoft Access Hilfe
    Treeview... suche Tipps, Literatur, Beispiele & Erklärungen: Hallo zusammen, ich möchte mich etwas intensiver mit dem Thema Treeviews befassen und suche Weblinks, Beispiele oder frei zugängliche Literatur dazu. Ziel ist es Daten aus zwei Tabellen...
  6. Beispiele für Abfragekriterien

    in Microsoft Access Tutorials
    Beispiele für Abfragekriterien: Beispiele für Abfragekriterien Access für Microsoft 365 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Mehr... Weniger...
  7. Beispiele für Platzhalterzeichen

    in Microsoft Access Tutorials
    Beispiele für Platzhalterzeichen: Beispiele für Platzhalterzeichen Access für Microsoft 365 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Mehr... Weniger...
  8. Beispiele für die Verwendung von Datumsangaben als Suchkriterien in Access-Abfragen

    in Microsoft Access Tutorials
    Beispiele für die Verwendung von Datumsangaben als Suchkriterien in Access-Abfragen: Beispiele für die Verwendung von Datumsangaben als Suchkriterien in Access-Abfragen Access für Microsoft 365 Access 2019 Access 2016 Access 2013 Access 2010...
  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