Montag, 20. November 2017

Home
Tipps
Bücher
Software
News / Links
Hilfe
Impressum

Sponsored by
QualityHosting

Frage und Antwort
Datenbanken synchronisieren (Access 97, 2000)
von Carsten Paetsch
Problem:

Für eine Tabelle muss ein Primärschlüsselfeld erstellt werden, das aus einem String und einem Inkrement (möglichst Autowertfeld) kombiniert wird, also in der Art "NameA_1", "NameA_2", usw. Dabei ist 'NameA' identisch je Tabelle.

Eine zweite Tabelle in einer strukturell identischen, aber auf einem anderen Rechner installierten Datenbank muss analog indiziert werden, also "NameB_1, "NameB_2", usw. Beide Tabellen sollen dann per Anfügeabfrage an eine dritte Tabelle (in einer zentralen Datenbank) angefügt werden. Zweck des Ganzen ist, in der Haupttabelle die Herkunft des Datensatzes sofort zu erkennen.

Ein anderer Primärschlüssel ist aufgrund der Tabellenstruktur nicht möglich und ein einfaches Autowert-Feld pro Tabelle führt logischerweise zu doppelt indizierten Datensätzen in beiden Tabellen, weswegen die Anfügeabfrage dann nicht möglich wäre.

Wie ließe sich so etwas bewerkstelligen?

Antwort der TriniDat GmbH:

Anstatt den Stringwert und die Autowert-Zahl in einem Feld zu kombinieren, können Sie den Primärschlüssel über zwei verschiedene Felder aufteilen. In der Beispieldatenbank sehen Sie eine Tabelle namens tblRechnerA, die ein Textfeld "RechnerName" und einen Autowert-Feld "ID" enthält. Beide Felder sind im Primärschlüssel-Index enthalten: siehe Abbildung 1 unten. 

Der Standardwert des Textfeldes ist auf ="NameA" eingestellt, damit der Rechnername automatisch vergeben wird. Eine zweite Tabelle tblRechnerB hat die gleiche Struktur mit dem Textfeld-Standardwert ="NameB". Wenn Sie also Daten im Feld "TextDaten" eingeben, bleibt der Primärschlüssel über beide Tabellen eindeutig.

Die Abfrage zum Anfügen von Daten aus beiden Tabellen in eine Haupttabelle könnte etwa so aussehen:

Function DatenAnfügen(TabelleName As String)

    DoCmd.RunSQL _
    "INSERT INTO tblHauptTabelle (RechnerName,ID,TextDaten)"  _
    & "SELECT RechnerName,ID,TextDaten FROM " & TabelleName

End Function

Der Parameter TabelleName ist der Name der Tabelle, also z.B. "tblRechnerA".

 




Ein Service der TriniDat Software-Entwicklung GmbH - Am Wehrhahn 45 - 40211 Düsseldorf

  Suche
Suche starten
  Service
Leserbrief / Frage zu Access
Kontakt
  NewsLetter
NewLetter bestellen
NewsLetter abbestellen
  Partner-Seiten
HyperLink

www.trinidat.de


HyperLink

www.fulldotnet.de