PDA

Vollständige Version anzeigen : Einen Datensatz exportieren und in einer anderen DB wieder als neuen DS importieren ?


AWSW
28.04.2001, 21:36
Hallo liebes Forum,

Ich habe eine DB unter MS Access 2000. Ich möchte den Usern eine Möglichkeit bieten, einen einzelnen Datensatz zu exportieren und diesen dann somit für einen anderen User der das selbe Programm nutzt zu übergeben. Damit er die Daten für diesen einen Datensatz/Vorgang importieren kann und zur Verfügung hat.

Also in Kurzform:
Einen bestimmten Datensatz exportieren (als .TXT Datei – oder so) und dann wieder in eine andere DB wieder importieren.

Ich habe mich bisher nur mit der TransferText & OutputTo Funktion beschäftigt, weiß aber nicht wie man nur den einen grade aktuellen Datensatz exportiert / importiert. Bisher habe ich halt nur alle Daten transferiert. Das bringt mich für diese Funktion aber nicht weiter...


Meine DB ist wie folgt aufgebaut:

- Für die Datensätze gibt es (wegen der 2 KByte Grenze) 5 Tabellen, benannt als „Daten 1“ „Daten 2“ ... „Daten 5“;
- Die Tabellen enthalten jeweils ein „ID“ Feld, das in jeder der 5 Tabellen den gleichen in der DB einmaligen Zahlenwert für den jeweiligen Datensatz erhält. Diese Nummer wird in der Daten 1 – Tabelle per Autowert generiert und in die jeweils anderen 4 Tabellen kopiert. Somit hängt dieser Datensatz zusammen;
- In dem Eingabeformular wird zur Zusammenführung der 5 Datentabellen eine Abfrage benutzt. Die Abfrage heißt: „Daten 1 bis 5“ Jeder Datensatz mit der gleichen ID gehört zur selben ID-Nummer in einer der anderen Tabellen. Unter dieser Bedingung werden dann die Daten in der Abfrage aufgeführt. Die Eingabemaske hat die Abfrage als Datenherkunft;

Die ID Nummern sind also fortlaufend in jeder Tabelle vorhanden... Da sehe ich auch schon ein Problem: Da ja keine gleichen ID-Nummern vorhanden sein können, da dann ja sonst die Daten durcheinander kommen würden. Diese müssten also irgendwie gewechselt werden, wenn sie exportiert werden, oder wenn sie beim Importieren auf vorhandene gleiche Nummern stoßen... Ich hatte mit auch schon dazu überlegt, das man (da die ID Felder keine Primärschlüssel sind) auch beim zu exportierenden Datensatz die ID Nummer durch das Datum & Uhrzeit ( Jetzt() ) tauscht, da man ja nicht davon ausgehen kann das der Import dann zur selben Zeit wieder erfolgt. Somit wäre der Datensatz (ID) dann sehr eindeutig.

Könnt Ihr mir dazu bitte helfen, da ich da echt auf dem Schlauch stehe...

Vielen Dank

WalterS
29.04.2001, 09:56
Wo kommt die 2kByte -Grenze her??.

Eine Datenseite besteht aus 2k aber ein Datensatz kann ja über mehrere Seiten gehen.

Ich würde eine eigen DB für den Export generieren und in dieser TB eine einzige Tabelle für den Datensatz anlegen. Diese Tabelle kann man dann in die jeweilige DB einbinden und die Daten mit einer INSERT INTO Abfrage füllen/einlesen.

PS.: Die Idee mit dem Datum/Uhrzeit ist ausgezeichnet und könnte noch um den USER der den Datensatz exportiert hat, erweitert werden.

AWSW
30.04.2001, 17:47
Hi Walter,
dass hört sich schon mal gut an mit der separaten DB - aber wie mache ich dass am schlauesten ???

Das 2KByte Problem rührt noch von A97 her, da hatte ich damals in der DB nur eine einzige Tabelle mit fast vollständig erschöpfter Anzahl an Feldern im Bearbeitungsmodus... Dann kam irgendwann nach hinzufügen von noch mehr Feldern in die Tab beim Arbeiten in dem Formular eine Meldung nach ewta 75% der Eingaben eine Meldung "Datensatz zu groß". Mir blieb damals aus zeitlichen Gründen keine andere Chance, als die eine Tabelle in 2 aufzuteilen und per Beziehung zu verknüpfen und das Formular dann auf die Abfrage zu verweisen. Aus den 2 Tabellen für die Daten sind bisher halt dann 5 geworden...

??? Gibt es dafür eine bessere Lösung, dann brauche ich nicht immer 5 Tabellen zu bearbeiten... ???

DANKE SCHON MAL :D

AWSW
04.05.2001, 10:55
Hi Leute,
sorry wenn ich noch mal nerve - aber kann mir jemand dazu noch ein wenig helfen ??? Ich komme damit nicht so ganz klar :(

Danke

Alexander Jan Peters
04.05.2001, 14:40
<font color="#000000" size="2" face="Tahoma">Hallo,

bis Du Dir sicher, daß es nötig ist 5 Tabellen der gleichen Struktur zu verwenden?
Das klingt mir doch sehr nach unvollständiger Normalisierung.
Was genau wird den da gespeichert?
Zum Ansatz von Walter noch soviel,
es ist eigentlich nichts anderes (vom Handling her) als eine Aufteilung der DB in Front- und Backend.
In jedem Frontend ist die Übergabetabelle eingebunden und im Backend liegt diese eingebundenen Tabelle.
Das größte Problem ist meiner Ansicht nach der Primärschlüssel, da es bei der Übergabe ja zu Konflikten kommt, wenn er in der DB des Übernehmenden schon vorhanden ist (er müßte wohl neu generiert werden, was wiederum dazu führt das bei einer "Zurück"-Übergabe kein Bezug mehr hergestellt werden kann).
Warum arbeiten die Benutzer den überhaupt mit Stand-Alone-DBs?
Und was wird da übergeben, wenn die Daten in den verschiedenen DBs doch eh alle uznterschiedlich sind?

Gruß

A.J. Peters

Empfehlenswerte Links:
<a href="http://www.donkarl.com">Access FAQ von Karl Donaubauer</a>
<a href="http://www.access-paradies.de/Links.htm">Access-Paradies Links</a></font>

AWSW
04.05.2001, 15:40
Also,
erst mal Danke für die Antwort :D

Da muß ich, um das gut erklären zu können etwas ausholen... ... ...

Die User dieser auf Access 2000 basierenden Anwendung arbeiten fast alle mit Laptops im Außendienst. Es sind auch etwa so 30 Büroarbeitsplätze dabei, das ist aber eher der kleinere Teil der User. Klar wäre es toll das Server-basiert zu installieren, geht aber schlecht wegen der Mobilität der User.

Die User erstellen mit der Anwendung Berichte und Dokumente die der Kunde nach Vollendung der eingentlichen Arbeiten abzeichnen muß. Das Problem das sich manchmal auftut ist folgendes: Ein Mitarbeiter arbeitet einige Tage an dem Projekt und ist dann z. B. wegen Krankheit nicht in der Lage das Projekt zu beenden und die Unterschriften zu holen... Der User der die Arbeiten übernimmt muß also entweder die DB auf seinen Laptop kopieren um die Daten zu haben oder schlimmsten Falls alles neu einklimpern. Durch die angestrebte Lösung wäre das ja Schnee von gestern, da er dann ja den einen Datensatz importiern könnte...

Das mit den 5 Tabellen habe ich damals wie schon gesagt nicht anders lösen können, da wußte ich auch noch nix von diesem genialen Forum :D Wenn Ihr mir einen Hinweis geben könntet wie ich das besser lösen kann - nur her damit :)

Ich habe ´mich schon gefragt ob man die ID nicht einfach beim Exportiern löschen kann, so dass der DS dann in der EmpfängerDB per Autowert eine neue ID erhält... ???

Ich hoffe Ihr könnt mir helfen :) Wäre echt SUPER KLASSE...

DANKE

patrik
04.05.2001, 18:56
wenn du mit nur einer datenbank arbeitest welche als host auftritt und der aussendienst nur mit replikaten arbeitet (die können alles was die mdb auch kann) dann must du dich nicht um das Anpassen der IDs kümmern "jetzt synchronisieren" wird sich um alles kümmern :)

AWSW
04.05.2001, 18:57
Danke Patrik,
aber die Anwendungen sind an sich eigenständig... Meinst Du das mit dem Synchronisieren bezogen auf den Import des einzelnen DS ???

patrik
04.05.2001, 19:03
mit "datenbank in Replikat umwandeln" kannst du unter Access2000 eine Datenbank so kopieren, dass die beiden "Kopien" miteinander synchronisiert werden können. Das löst das ID Problem wiklich. Ist nicht genau das das problem :)

AWSW
04.05.2001, 19:10
Hallo nochmal,
aber importiert der Befehl dann nicht alle Daten ??? und nicht nur einen bestimmten DS ???

patrik
04.05.2001, 19:16
ok, da hab ich zu wenig gelesen...sorry

du könntest deinen gewünschten datensatz mittels einer anfügeabfrage in eine leere Tabelle speichern, diese exportieren und in der anderen datenbank importieren und dann noch mal eine anfügeabfrage dann hast du gar keine ID Probleme mehr :)

AWSW
04.05.2001, 19:19
Hey,
das hört sich doch gut an - werde ich gleich morgen mal testen !!!

PS: Hast Du hier für auch einen Tipp für mich ??? :D Datum() => TAG.MONAT.JAHR wird nicht als zusammenhängender Wert betrachtet ?!? (http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=43808)

AWSW
05.05.2001, 13:26
Vielen Dank an dieser Stelle noch mal an Patrik. Dein zugesendetes Beispiel erfüllt mit einigen Anpassungen genau meine Anforderungen :D