PDA

Vollständige Version anzeigen : Synchronisation


juls
19.03.2007, 10:30
Hi, bitte um Hilfestellung

ich habe 2 Access Datenbanken, beide beinhalten für jede Person ein Datum (Ablaufdatum einer Berechtigung), jedoch ist dieses in einer der beiden Datenbanken kein Feld im Datumsformat, sondern steht in einem Textfeld.

Ziel sollte es sein, dass sich das Datum der Datenbank A mit dem Datum der Datenbank B automatisch synchronisiert (zb täglich).

Da das eine Datum, wie oben erwähnt, als Zeichenkette vorliegt, bedarf es auf jeden Fall einer Konvertierung in ein Datumsformat, das Datum befindet sich jedoch immer an der gleichen Position des Strings, das Abschneiden sollte also kein Problem sein...

Wie lässt sich nun diese Synchronisation realisieren?

danke

Anne Berg
19.03.2007, 10:57
das Datum befindet sich jedoch immer an der gleichen Position des Strings,Heißt das, das Datum ist Teil einer Zeichenkette, kein eigenständiges Textfeld?

Im Prinzip hast du zwei Möglichkeiten:SELECT tbl_datconv.* FROM tbl_datconv WHERE cstr(dat_feld) = (txt_feld);

oder

SELECT tbl_datconv.* FROM tbl_datconv WHERE (dat_feld) = DateValue(txt_feld);

juls
19.03.2007, 11:22
genau, bei Datenbank A steht das Datum "unter anderem" in einem Texfeld, jedoch zumindest immer an der gleichen Stelle, somit lässt sich das abschneiden festlegen.

Problem ist ja diese automatische Synchronisation.
Wie kann das funktionieren?
Hab leider keine Vorstellung was mit Access im Zusammenhang mit VB bzw Makros im Sinne eines "Jobs" realisierbar ist.

Zur Wiederholung:

Datenbank A startet, schneidet aus den jeweiligen Textfelder das Datum aus, konvertiert es, (Datenbank B startet), vergleicht es mit den Datumsfeldern der Datenbank B und aktualisiert gegebenenfalls

danke

Anne Berg
19.03.2007, 11:34
Also, dieses "unter anderem in einem Textfeld" musst du wohl noch näher beschreiben. Es muss auf ein einheitliches Verfahren hinauslaufen, wenn du das automatisiert und mit Hilfe einer Abfrage lösen willst.

Im Prinzip könnte das folgendermaßen aussehen:Update [C:\Daten\Datenbank_B.mdb].tabelle1 AS B
Inner Join tabelle1 As A On B.PersId = A.PersID
Set B.tabDatum = DateValue(Left(A.tabDatum, 8))
Where B.tabDatum <> DateValue(Left(A.tabDatum, 8))

juls
19.03.2007, 11:43
In dem Textfeld steht zb: "Ablauf der Berechtigung xy am 19 03 07, blablabla..."

Das Datum steht aber immer an der selben Stelle, man kann also bei diesem String immer die zb ersten x und letzen y Zeichen abschneiden (->trim?)

Das Datum steht auch genau so drinnen, also je 2 Stellen für Tag/Monat/Jahr mit einem Leerzeichen getrennt.

danke

Anne Berg
19.03.2007, 11:47
Dann kannst du die MID-Funktion einsetzen. Zähle die Stellen ab, die vorne abgeschnitten werden müssen...

Mid(feld, start, länge)

juls
19.03.2007, 12:21
ok, danke

wie erfolgt nun die Konvertierung der Zeichenkette "14 03 07" in ein Datum und wie lässt sich Synchronisation automatisieren, also zb täglich zu einer bestimmten Urzeit durchführen?

mfg

Anne Berg
19.03.2007, 12:46
wie erfolgt nun die KonvertierungWas glaubst du wohl, wofür die Funktion 'DateValue' in der Abfrage eingesetzt wird? :confused:

Du kannst die Aktion in eine MDB packen und per Autoexec-Makro aufrufen lassen. Die MDB kannst du dann über den Windows-Taskmanager (Systemprogramme: "Geplante Tasks") starten lassen.

juls
19.03.2007, 12:54
hm, gut, werde mal schaun wie weit ich komme und mich bei Bedarf dann noch melden,

derweil mal danke auf jeden fall,

mfg