Hallo,
ich suche den vba- Befehl für die Schaltfläche 'jetzt synchronisieren'.
Hallo,
wo ist diese Schaltfläche zu finden ?
Und was willst Du synchronisieren ?
Es mehr Details wären schon sinnvoll, statt des Einzeilers.
Zitat von: tismo am März 04, 2020, 19:14:58
ich suche den vba- Befehl für die Schaltfläche 'jetzt synchronisieren'.
Ich habe zwar auch keine Ahnung worum es geht, aber die Konstante
AcCommand.acCmdSynchronizeNow wäre rein vom Wortlaut her ein guter Treffer.
Für die Jüngeren unter uns: ;)
Bis zur Vers. 2010 konnte mann noch Tabellen replizieren, d. h. Tabellen liegen z.B. auf einem Server und andere Computer konnten von überall aus dem Internet drauf zurgreifen. Laptops, die nicht ständig mit dem Internet verbunden sind, haben ein Replikat, welches man mit einem Internetzugang mit dem Server synchronisieren kann. Dies ist eine sehr einfache und sinnvolle Art nicht-internetverbundene Computer mit Access in einem Netzwerk zu integrieren. Leider hat MS die Replikation nach Access 2010 eingestellt.
Um das Synchronisieren für den Anwender einfacher zu machen, benötige ich den vba-Code um das Synchronisieren zu starten.
Das ist einfach eine Methode des DAO Datenbankobjektes.
Beispiel:
Dim dbSync As DAO.Database
Dim strLocal As String, strRemote As String
strLocal = "Pfad/Name des lokalen Replikates"
strRemote = "Pfad/Name des Server Replikates"
Set dbSync = DBEngine(0).OpenDatabase(strLocal)
dbSync.Synchronize strRemote
dbSync.Close
Set dbSync = Nothing
Gruß Andreas
Danke Andreas, die Synchronisierung klappt.
der Pfad X liegt extern auf einem Server. Ist es möglich, dass vor der eigentlichen Synchronisierung ersteinmal mittels vba geprüft wird, ob der Pfad X überhaupt vorhanden ist. Zur Zeit läuft die vba durch, auch wenn ich nicht online bin, Pfad X ist nicht vorhanden.Sollte Pfad X nicht vorhaden sein sollte ein Nachricht erscheinen.
Private Sub Bild55_Click()
Me.Text46 = "Synchronisierung"
Dim dbSync As DAO.Database
Dim strLocal As String, strRemote As String
strLocal = ("D:/Bemopro/Database BeMoPro 2019.mdb")
strRemote = ("X:/Database/Database BeMoPro 2019.mdb")
Set dbSync = DBEngine(0).OpenDatabase(strLocal)
dbSync.Synchronize strRemote
dbSync.Close
Set dbSync = Nothing
Me.Datum3 = Now()
'Me.Text46 = " "
End Sub
P.S. Wo muss ich Me.Text46 = "Synchronisierung" hinschreiben, damit der Text vor der Synchronisierung erscheint und danach durch Me.Text46 = " " wieder gelöscht wird?
Gruß,
Lars
Hallo,
wenn du das möchtest dass zuvor ein Text erscheint, dann schreibe folgendes:
Private Sub Bild55_Click()
Me.Text46 = "Synchronisierung"
Me.Timerinterval = 50
End Sub
Und in das Ereignis "Bei Zeitgeber schreibst du den Rest hinein, inclusiv Me.Timerinterval = 0 am Anfang:
Private Sub Form_Timer()
Dim dbSync As DAO.Database
Dim strLocal As String, strRemote As String
Me.Timerinterval = 0
strLocal = ("D:/Bemopro/Database BeMoPro 2019.mdb")
strRemote = ("X:/Database/Database BeMoPro 2019.mdb")
Set dbSync = DBEngine(0).OpenDatabase(strLocal)
dbSync.Synchronize strRemote
dbSync.Close
Set dbSync = Nothing
Me.Datum3 = Now()
Me.Text46 = " "
End Sub
Gruß Andreas
Zitat von: tismo am März 06, 2020, 18:47:47
P.S. Wo muss ich Me.Text46 = "Synchronisierung" hinschreiben, damit der Text vor der Synchronisierung erscheint und danach durch Me.Text46 = " " wieder gelöscht wird?
Der Text ist prinzipiell schon an der richtigen Stelle.
Vermutlich reicht ein
DoEvents nach dem Setzen des Steuerelementinhalts schon aus.
Perfekt ... !
Gibt es jetzt noch eine möglichkeit um zu kontrollieren, ob der das Laufwerk X vorhanden (online) ist ?