collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 62
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 3
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 14065
  • stats Beiträge insgesamt: 67516
  • stats Themen insgesamt: 9099
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Anzeige: Neue Version existiert  (Gelesen 4632 mal)

Offline Carl

  • Access-Profi
  • **
  • Beiträge: 395
Anzeige: Neue Version existiert
« am: Februar 06, 2018, 08:35:18 »
Guten Morgen,

mal ne Frage. Ich würde in einem Frontend gern anzeigen lassen, welches die aktuelle Version vom Frontend ist. Bzw. dass eine aktuellere existiert.

Ich habe dazu die Idee, in einer kleinen Tabelle die Zahl der aktuellen Version und die in dem jeweiligen Frontend angegebene Version abzulegen und im Frontend eine Anzeige einzurichten, die dann beispielsweise rot wird.

Gibt es noch andere, bessere Ideen für diesen Zweck?

Carl
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23445
Re: Anzeige: Neue Version existiert
« Antwort #1 am: Februar 06, 2018, 08:55:28 »
Hallo,

das kommt auf das Update-Konzept an..

Wie editierst Du in Deinem Versuch das Tabellenfeld mit der aktuellsten Version?

Befindet sich das BE im laufenden Betrieb in Deinem Zugriff?

Was soll passieren, wenn der User "rot" sieht?


Eine (automatisierte und prinzipielle) Möglichkeit z. B. ist, die aktuell(st)e FE-Datei im Netzwerk zu veröffentlichen und jedem User lokal einen Link zu spendieren, der, bevor die DB gestartet wird, das aktuelle FE lokal auf seinen Rechner kopiert (und damit das alte überschreibt).  Danach wird das lokale FE gestartet.


Bei Usern außerhalb des LAN müssen aber andere Methode Anwendung finden. Z. B. Versand der FE-Datei per Email und eine "Update-DB" , wenn am BE zusätzlich geändert werden muss.

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1335
Re: Anzeige: Neue Version existiert
« Antwort #2 am: Februar 06, 2018, 08:59:11 »
@Carl,

das Frontend muss seine Version kennen. Ob es die nun aus einer Tabelle, einer VBA-Konstanten, einer eigenen Property, der Registry, einer Datei (in Text- oder Binärform), etc. ausliest, ist dabei völlig egal.

Beim Backend ist man weniger flexibel. Hier dürfte man auf einen Tabelleneintrag oder auf  eine parallel zum Backend liegende Datei (in Text- oder Binärform) eingeschränkt sein.

Der Clou bei der Geschichte sollte es ja sein, dass der Benutzer immer mit dem aktuellen Frontend unterwegs ist. Entweder startet er seine Anwendung über eine Batch-Datei (oder auch ein anderes Skript, das vom Rechner des Datenbanknutzers gestartet werden kann), die ggf. vorher das Kopieren übernimmt, oder es liegt ein eigenes Start-Frontend vor, das eventuelles Kopieren übernimmt und danach das normale Frontend startet.
Grüße von der (⌒▽⌒)
 

Offline Carl

  • Access-Profi
  • **
  • Beiträge: 395
Re: Anzeige: Neue Version existiert
« Antwort #3 am: Februar 06, 2018, 12:19:31 »
Hallo,

die Tabelle ist im Formular "Einstellungen" als Unterformular eingebunden. Oder im Backend einfach per Hand.

Das BE ist im laufenden Betrieb in meinem Zugriff.

Wenn der user rot sieht, wird er durch einen Schriftzug informiert, dass eine neue Version an ihn per Email verschickt wurde und er in einer nunmehr alten Version arbeitet. Alternativ dazu könnte ich die Knöppe in der alten auch sperren und ihn zum Wechsel zwingen.

>Eine (automatisierte und prinzipielle) Möglichkeit z. B. ist, die aktuell(st)e FE-Datei im Netzwerk zu veröffentlichen und jedem User lokal einen Link zu spendieren, der, bevor die DB gestartet wird, das aktuelle FE lokal auf seinen Rechner kopiert (und damit das alte überschreibt).  Danach wird das lokale FE gestartet.<

Das wäre eventuell die einfachste Möglichkeit. Wie macht man das mit dem Link?

Oder wäre es besser, in das Frontend eine Funktion einzubauen, die das neue FE auf den Desktop kopiert, das laufende FE schließt und wieder öffnet?

Die DB wird täglich von ca. 20°° bis 6°° nicht editiert.

Carl
« Letzte Änderung: Februar 06, 2018, 12:26:35 von Carl »
 

Offline Carl

  • Access-Profi
  • **
  • Beiträge: 395
Re: Anzeige: Neue Version existiert
« Antwort #4 am: Februar 06, 2018, 12:21:39 »
Oder noch einfacher: Ein Frontend, das das jeweils aktuelle Frontend auf den Desktop holt, das alte überschreibt und dann das neue startet, so dass der USER nichts davon mitbekommt, um ihn nicht zu irritieren?

Carl
 

Offline Carl

  • Access-Profi
  • **
  • Beiträge: 395
Re: Anzeige: Neue Version existiert
« Antwort #5 am: Februar 06, 2018, 12:28:49 »
okay, Start-Frontend.

Wäre es möglich, dass mal jemand mal ein Start-Frontend zum anschauen anhängt? Die sind doch sicher nicht so unterschiedlich ...

Carl
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23445
Re: Anzeige: Neue Version existiert
« Antwort #6 am: Februar 06, 2018, 12:40:22 »
Hallo,

was meinst Du jetzt mit Start-FE?  Eine DB die die akt. Version kopiert, dann schließt und die neue Db startet?

Das ist zu "kompliziert", weil die FE-Datei ja schon geöffnet ist und ein Kopie in aller Regel fehlschlägt.
Das selbe Prinzip geht doch mit einem Link (zu einer Batch-Datei) einfacher und schneller:

c:\DBVerzeichnis\FeCopyStart.bat   (oder .cmd):

Xcopy "\\Server\Freigabe\DBVerzeichnis\FE_Datei.accdb" , "c:\DBVerzeichnis\FE_Datei.accdb"
"Programmpfad\Office X\MSAccess32.exe"  "c:\DBVerzeichis\FE_Datei.accdb"


Link:
Ziel:  "c:\DBVerzeichnis\FeCopyStart.bat"




Offline Carl

  • Access-Profi
  • **
  • Beiträge: 395
Re: Anzeige: Neue Version existiert
« Antwort #7 am: Februar 06, 2018, 13:16:14 »
Die user haben individuelle Verzeichnisse in der Cloud. Ich komme da mit der xcopy nicht klar. Was sie alle haben ist ein Desktop. Ich dachte es wäre möglich, den code so zu formulieren, dass die db immer auf den Desktop abgelegt wird?

Gibt es eine Möglichkeit, ein (für alle user gleiches und separates) Start-FE zu nehmen, das

(1) das aktuelle FE aus seinem Verzeichnis holt und auf dem desktop ablegt
(2) dabei die alte Version überschreibt
(3) die geholte neue Version startet
(4) und sich selbst schließt
?

Carl
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1885
Re: Anzeige: Neue Version existiert
« Antwort #8 am: Februar 06, 2018, 15:58:58 »
Hallo Carl,
Hier findest du ein Beispiel: http://www.ms-office-forum.net/forum/showthread.php?t=333912
gruss ekkehard

edit: Du kannst auch mal nach "mdbloader" gurglen.
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Carl

  • Access-Profi
  • **
  • Beiträge: 395
Re: Anzeige: Neue Version existiert
« Antwort #9 am: Februar 06, 2018, 18:40:09 »
Muss man bei jeder Lösungsvariante den Pfad von MS Access eingeben?

Das verlinkte Tool produziert bei mir massenweise Fehlermeldungen, ich musste das abwürgen.

Hast Du eine Variante für 2010, die man leichter configurieren und anpassen kann?

Carl
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1335
Re: Anzeige: Neue Version existiert
« Antwort #10 am: Februar 06, 2018, 18:58:35 »
Mit SysCmd(acSysCmdAccessDir) lässt sich das Verzeichnis, in dem MsAccess.exe beherbergt ist, problemlos feststellen.

Zu dem Tool kann ich selbst nichts sagen - aber egal ob Access97 oder Access2016 verwendet wird, sollte die Funktionalität bei verschiedenen Versionen unverändert gleich gut oder schlecht sein.
Grüße von der (⌒▽⌒)
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1885
Re: Anzeige: Neue Version existiert
« Antwort #11 am: Februar 07, 2018, 13:06:05 »
Hallo Carl,
Hier eine kurze Beschreibung wie ich es bei mir mal implementiert habe.
1. In deinem FE muss es eine Tabelle geben in der du die Versionsnr. ablegst, -
Weiteres dazu siehe Code.
2. In der Start-DB
  a) verknüpfst du diese Tabelle einmal aus dem lokalen FE (alte Version) und
einmal aus dem zentralen FE (neue Version)
  b) richtest du das AutoExec-Macro ein, - Aktion: AusführenCode "LadeNeueVersion()"
  c) in ein allgem. Modul schreibst du den folgenden Code (Namen anpassen)
Option Compare Database
Option Explicit

Const conAppName As String = "DeinFE.mdb"
Const conBackupName As String = "DeinFE.bak"
'ich speichere hier zur Sicherheit das alte FE

Const conOldVersionPath As String = "PfadDeinesLokalenFE\"
Const conNewVersionPath As String = "PfadDeinesZentralenFE\"    ' = neue Version

Public Function LadeNeueVersion()

    Dim StartApp As Integer
    Dim strAccessPath As String
    Dim lngOldVersion As Long
    Dim lngNewVersion As Long
   
    strAccessPath = SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE"
   
    lngOldVersion = DLookup("VersionsNr", "tbl_FlagsLocal")
    lngNewVersion = DLookup("VersionsNr", "tbl_FlagsServer")
    'Im FE gibt es eine Tabelle (tbl_Flags), die ein Feld VersionsNr enthält (Zahl).
    'In der Loader-DB (hier) wird diese einmal aus dem lokalen FE als "tbl_FlagsLocal"
    'und einmal aus dem zentralen FE als "tbl_FlagsServer" verknüpft.

    If lngOldVersion < lngNewVersion Then
        'Kopie anlegen
        FileCopy conOldVersionPath & conAppName, conOldVersionPath & conBackupName

        'alte Version löschen
        Kill conOldVersionPath & conAppName

        'neue Version vom Server holen
        FileCopy conNewVersionPath & conAppName, conOldVersionPath & conAppName
    Else
    End If

    'neues FE starten
    StartApp = _
        Shell(conAccessPath & " " & conOldVersionPath & conAppName, vbNormalFocus)

    'Loader beenden
    Application.Quit
   
End Function


gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Carl

  • Access-Profi
  • **
  • Beiträge: 395
Re: Anzeige: Neue Version existiert
« Antwort #12 am: Februar 12, 2018, 08:24:00 »
Hallo Beaker, ich setzt mich dran.

Aber:
Ein Problem bei mir hat sich herauskristallisiert, dass es keinen für alle user gleichen Pfad zum Frontend oder zur Access-Installation gibt. Die user bekommen das per email zugeschickt

Ich würde jetzt lieber im Frontend anzeigen lassen, ob es eine jeweils neuere Version gibt (die dem user schon per email zugeschickt wurde).

Außerdem würde ich gern verhindern, dass jemand das Frontend aus dem Anhang einer Email heraus starten kann. Ist denn sowas möglich?

Hier der folgende code kontrolliert, ob bereits eine Instanz eines Frontends läuft. Kann man den so umwandeln, dass er kontrolliert, ob das Frontend (irgendwo) auf Platte liegt?

Function LäuftAnwendung() As Integer
 Dim DB As Database
 Set DB = CurrentDb()
 If TestDDELink(DB.Name) Then
 LäuftAnwendung = -1
 Else
 LäuftAnwendung = 0
 End If
 End Function

 Private Function TestDDELink(ByVal strAppName$) As Integer ' Hilfs Function für IsRunnig
 Dim varDDEChannel
 On Error Resume Next
 Application.SetOption ("Ignore DDE Requests"), True
 varDDEChannel = DDEInitiate("MSAccess", strAppName)

 If Err Then
 TestDDELink = False
 Else
 TestDDELink = True
 DDETerminate varDDEChannel
 DDETerminateAll

Carl
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1335
Re: Anzeige: Neue Version existiert
« Antwort #13 am: Februar 12, 2018, 08:52:54 »
Eine ACCDB kann nur 1x/Rechner geöffnet sein, deshalb ist der gezeigte Code im Zusammenhang mit der Fragestellung ziemlich sinnfrei.
Grüße von der (⌒▽⌒)
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1885
Re: Anzeige: Neue Version existiert
« Antwort #14 am: Februar 12, 2018, 13:12:20 »
Hallo Carl,
Zitat
Ein Problem bei mir hat sich herauskristallisiert, dass es keinen für alle user gleichen Pfad zum Frontend oder zur Access-Installation gibt. Die user bekommen das per email zugeschickt
Wie gesagt, den Pfad zur MSACCESS.EXE bekommst du von SysCmd(acSysCmdAccessDir).
Die Pfade auf den Clients könntest du auch im BE speichern. Als "ID" bietet sich da Environ("ComputerName") an.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.