<...zurück>

Datenbank-Tabellen-Übertragung vom/zum PsPC

Die automatisierte Übertragung wird mittels zweier API-Funktionen realisisert. Vorraussetzung ist eine funktionierende ActiveSync-Installation. Die Funktionen DESKTOPTODEVICE und DEVICETODESKTOP lassen sich problemlos aus VB, Access-Basic oder anderen VBA-Derivaten aufrufen.

Deklarationsteil:

Declare Function DESKTOPTODEVICE Lib "adofiltr.dll" _
(ByVal desktoplocn As String, _
ByVal tablelist As String, _
ByVal sync As Boolean, _
ByVal overwrite As Integer, _
ByVal devicelocn As String) As Long 

Declare Function DEVICETODESKTOP Lib "adofiltr.dll" _
(ByVal desktoplocn As String, _
ByVal tablelist As String, _
ByVal sync As Boolean, _
ByVal overwrite As Integer, _
ByVal devicelocn As String) As Long

Der Funktionsaufruf für die Richtung PC nach PPC sieht folgendermaßen aus:

result = DESKTOPTODEVICE("c:\test.mdb", "tabTest..", False, True, "")
desktoplocn "Desktop-Location", der Ort, an dem die Quelltabelle steht (MDB-Datenbank), der String enthält den vollständigen Pfad zur Datenbank. (Laufwerk:\Verzeichnis\Datenbank.mdb)
tableList Dieser String enthält den oder die zu übertragenden Tabellennamen, mit spezieller Notation ist es möglich, nur ausgesuchte Felder einzelner Tabellen zu übertragen. Mit vorangestelltem Ausrufungszeihen werden die Tabellen als "Read-Only" erstellt.
sync Momentan nicht in Benutzung, Standardwert ist Falsch, gedacht für spätere Erweiterungen
overwrite Flagge, ob die Zieltabellen überschrieben werden sollen oder nicht
devicelocn Ebenfalls für zukünftige Benutzung gedacht, die Tabellen landen immer im Objectstore des PPC, die Angabe eines anderen Ziels ist NICHT möglich. (nur CE2.11)

Für die umgekehrte Richtung sieht der Code so aus:

result = ´DEVICETODESKTOP("c:\test.mdb", "tabTest..", False, True, "")
desktoplocn "Desktop-Location", der Ort, an dem die Zieltabelle stehen soll (MDB-Datenbank), der String enthält den vollständigen Pfad zur Datenbank. (Laufwerk:\Verzeichnis\Datenbank.mdb)
tableList Dieser String enthält den oder die zu übertragenden Tabellennamen.
sync Momentan nicht in Benutzung, Standardwert ist Falsch, gedacht für spätere Erweiterungen
overwrite Flagge, ob die Zieltabellen überschrieben werden sollen oder nicht
devicelocn Ebenfalls für zukünftige Benutzung gedacht, die Tabellen stammen immer aus dem Objectstore des PPC, die Angabe einer anderen Quelle ist NICHT möglich.(nur CE2.11)

Sollte der PPC nicht erreichbar sein, eine Übertragungsstörung vorliegen oder ADO-Fehler (Tabelle in Benutzung, Tabelle nicht vorhanden u.s.w.) auftreten, so wird dies durch Laufzeitfehler angezeigt.

-2147024894 Die Gegenstelle ist nicht korrekt angeschlossen oder ADOCE ist nicht korrekt registriert
-2146824447 Die zu übertragende Tabelle existiert bereits im Device und "Overwrite" steht auf "False"
-2147217865 Eine vom PPC zu importierende Tabelle existiert nicht.
-2147024891 Zugriffsverletzung auf ADOCE-Objekt

Als kleiner Tip: Da sich der Übertragungsmechanismus keiner "normalen" Mechanismen (Anfügen von Daten per SQL-Select, Update von Daten per SQL-Update) bedient, besteht leider die Gefahr einer defekten Datenbank (z.B. Tabelle in der Tables-Auflistung vorhanden, kann jedoch weder geöffnet noch bearbeitet werden...). Aus diesm Grund lasse ich die Daten in eine "quasi"-Wegwerf-Datenbank importieren, teste dann innerhalb dieser DB die Gültigkeit der Daten und erst dann lasse ich die Daten an die "echte" Datenbank (egal ob SQL oder MDB anfügen. Sollte tatsächlich mal ein Defekt in der Übergabe-Datenbank auftreten (schon passiert), dann läßt sich diese ohne weiteres wiederherstellen, ohne sich an den "echten" Daten vergreifen zu müssen.

 

<...zurück>