MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 21.06.2004, 15:48   #1
Fynbos
Neuer Benutzer
Neuer Benutzer
Tipp 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.

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 ) 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.

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:[list=1][*]Es setzt die Variablen für die Verzeichnisse, die Version etc fest.[*]Es checkt, ob das Zielverzeichnis auf dem User-Rechner da ist. (hier: c:\FrontEnd\Theseus)[*]Wenn nicht, erstellt es es.[*]Es vergleicht die aktuelle Versionsnummer auf dem Server mit dem auf dem Zielrechner[*]Wenn diese nicht gleich sind, löscht es die alte Version auf dem Userrechner.[*]Dann kopiert es die Neue Version vom Server auf den Userrechner und gibt dazu eine Meldung aus, damit der User nicht ungeduldig wird.[*]Es startet das Programm.[*]Falls die Versionen gleich sind und das Programm nicht updaten muss, startet es direkt die Access-Datei.[*]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. )

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...
Angehängte Dateien
Dateityp: zip batches.zip (1,5 KB, 312x aufgerufen)
Fynbos ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.06.2004, 11:54   #2
Fynbos
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Top Verbessert: Mit Komprimierung

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... )

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...
Angehängte Dateien
Dateityp: zip batches2.zip (2,4 KB, 179x aufgerufen)
Fynbos ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.06.2004, 15:50   #3
lordofchaos
(Email-Bestätigung fehlt!)
Standard Schönheitsfehler

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 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.06.2004, 15:55   #4
Arne Dieckmann
MS-Office-Forum Team MS-Office-Forum Team
Standard

"Schuld eigen" würde ich sagen. Es sollte laut Anleitung nur ein Desktop-Link zur Batch-Datei angelegt werden, dann sollte es klappen.

__________________

Gruß, Arne

Links: FAQGrundlagenRelationale DatenbankenStephen LebansDBWiki
Tools: TabToWebSQL-FormatterCode ConverterRegEx testen
System: Win7 Pro 64bit, Office 20xx, div. MS-SQL Server 20xx, Firefox
Bitte keine Fragen per Mail/PN und als Neuling diese Anleitung (Code-Tags, Anhänge etc.) lesen.
Arne Dieckmann ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 24.06.2004, 08:29   #5
Fynbos
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

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 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 24.06.2004, 11:06   #6
lordofchaos
(Email-Bestätigung fehlt!)
Standard sowas sowas

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 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 24.06.2004, 11:11   #7
Arne Dieckmann
MS-Office-Forum Team MS-Office-Forum Team
Standard

@Freddy: Ich muss mir wohl so etwas abgewöhnen. Ich dachte, dass man diesen Spruch auch in München kennt.
Ich könnte auch "Selber schuld" schreiben.

__________________

Gruß, Arne

Links: FAQGrundlagenRelationale DatenbankenStephen LebansDBWiki
Tools: TabToWebSQL-FormatterCode ConverterRegEx testen
System: Win7 Pro 64bit, Office 20xx, div. MS-SQL Server 20xx, Firefox
Bitte keine Fragen per Mail/PN und als Neuling diese Anleitung (Code-Tags, Anhänge etc.) lesen.
Arne Dieckmann ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 24.06.2004, 11:15   #8
lordofchaos
(Email-Bestätigung fehlt!)
Standard

@Arne
Also ich kannte den Spruch nicht
Aber selber Schuld bin ich nicht *g* ich habs ja nicht verwendet !
lordofchaos ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 24.06.2004, 12:11   #9
Fynbos
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Kannte ich auch noch nicht.

Um ehrlich zu sein, gibt es keinen trifftigen Grund, warum wir Netzlaufwerke nehmen.
Aber irgendwie habe ich das Gefühl, dass das sauberes arbeiten ist.
Oder irre ich da irgendwie?
Fynbos ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 24.06.2004, 12:14   #10
lordofchaos
(Email-Bestätigung fehlt!)
Standard

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 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 19.08.2004, 12:08   #11
Fynbos
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Noch mal verbessert

Wir schreiben das Sommerloch 2004 und schon kommen gelangweilte Admins, die Doom3 schon durch haben, auf die Idee:

Verbessern wir das ganze doch nochmal...

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.

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!
Angehängte Dateien
Dateityp: zip dateien.zip (1,5 KB, 210x aufgerufen)
Fynbos ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.08.2004, 14:28   #12
Ati
MOF User
MOF User
Standard

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
Ati ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.08.2004, 15:31   #13
Fynbos
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

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ß
Fynbos ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.08.2004, 15:38   #14
Ati
MOF User
MOF User
Standard

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
Ati ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.08.2004, 17:00   #15
Fynbos
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Zitat: von Ati

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

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...
Fynbos ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:21 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.