PDA

Vollständige Version anzeigen : Haupt- und Unterdatensatz


Jones
21.09.2001, 13:35
Ich habe eine Tabelle, in denen zwei verschiedene Satzarten enthalten sind. Satzart A ist der Hauptdatensatz, die darunter stehenden Datensätze (Satzart B) haben direkten Bezug zum oben stehenden Datensatz. Ich möchte nun zur weiteren Bearbeitung ein ID-Feld aus dem Hauptdatensatzin den Unterdatensatz kopieren. Wer kann mir da helfen?

holgii
21.09.2001, 15:02
Hallo Jones,

wenn Du die Daten auch noch als Text-Datei vorliegen hast, könntest Du sie mit VBA sequentiell verarbeiten.

Aus Datensätzen(DS) mit Satzart A merkst Du Dir die ID, die Du in DS mit Satzart B anfügst.

Beim Ausgeben der DS teilst Du sie noch nach Satzarten in eigene Dateien auf, eine für Satzart A, eine für Satzart B.

Die kannste dann nach ACCESS importieren,
Satzart A in TabA und Satzart B in TabB.

Gruß
holgii

Jones
21.09.2001, 15:32
Hallo Holgii,

die Frage ist wie? Ich habe eine Textdatei, die wie folgt aussieht:

Satzart A; Detail; ID;...
Satzart B; Detail;...
Satzart B; Detail;...
Satzart A;...

Alle DS Art B haben Bezug zum darüberliegenden DS A, die Zahl der einem DS A nachfolgenden DS B ist unterschiedlich.
Vielen Dank für Deine Hilfe

holgii
21.09.2001, 16:51
Heißt das:
Die Text-Datei hat keine FESTE DS-Länge, sondern Feldtrennzeichen ?

Jones
21.09.2001, 16:55
Hallo Holgii,

ja, Text mit Trennsymbol.

holgii
21.09.2001, 17:26
Ich hätte 'ne Idee, wenn es möglich wäre,
das KOMMA als Feldtrennzeichen zu verwenden...

Das klappt natürlich nicht, wenn KOMMAS Bestandteil der Daten sind...
Es sei denn, diese Daten sind wie folgt abgelegt: "A", "Müller, Heinz", "blablabla"

Sind KOMMAS in den Daten ohne dass die Daten durch Hochkommata eingeschlossen sind ?

Jones
24.09.2001, 12:08
Hallo Holgii,

es wäre möglich, Komma als Trennzeichen zu nutzen. In den Feldinhalten existieren keine Komma.

Sorry, aber ich kam am wochenende nicht an den Rechner.

Anne Berg
24.09.2001, 12:32
Ich möchte es einmal wagen, Dein Tabellenkonzept in Frage zu stellen.
Es sieht ganz nach dem (unglücklichen) Versuch aus, einem relationalen Datenmodell 'alte' hierarchische Strukturen aufzuzwingen.

Tu Dir einen Gefallen und nimm Abstand! :) Erstelle TabelleA und TabelleB und setze sie in eine 1:n Beziehung. Das wird Dir die darauf basierenden Abfragen und Verarbeitungen bestimmt erleichtern.

Jones
24.09.2001, 12:38
Hallo Anne,

würde ich ja gerne, Nur habe ich leider aus einem Uraltsystem diese Tabelle erhalten und möchte sie umsetzen. Dazu fehlt mir in den DS Art B allerdings das ID-Feld aus Satzart A. Dieses möchte ich nun automatisiert in Satzart B hineinkopieren.

Danke

holgii
24.09.2001, 12:57
Hallo Jones,

dann mach ma zuerst 'ne Sicherungs-Kopie von der Textdatei...

Anschliessend ersetze mit irgendeinem geeigneten Text-Editor alle Semikolons (;) durch Kommas (,).

Und dann könnteste diese VBA-Routine verwenden bzw. noch ausbauen:

Sub textMitTrennzeichen()

' Anzahl der Variablen sollte der max. Anzahl Felder in Text-Datei entsprechen
Dim txtDat1 'Feld vor dem 1. Trennzeichen
Dim txtDat2 'Feld vor dem 2. Trennzeichen
Dim txtDat3 'usw.

' Variable zum Zwischenspeichern der ID aus Satzart A
Dim txtID As String

On Error GoTo err_txtTrenn
Open "C:\Trennzeichen.txt" For Input As #1
Open "C:\TrennzeichenA.txt" For Output As #2
Open "C:\TrennzeichenB.txt" For Output As #3

Do While Not EOF(1)
' Textdatensatz einlesen
Input #1, txtDat1, txtDat2, txtDat3

' Vorausgesetzt, die Satzart steht immer in Feld1, die ID der SatzartA immer in Feld3 und für SatzartB
' wird immer das ID-Feld hinten angestellt:

If txtDat1 = "A" Then
txtID = txtDat3 'ID aus SatzartA merken
Print #2, txtDat1, txtDat2, txtDat3 ' SatzartA ausgeben
Else
Print #3, txtDat1, txtDat2, txtDat3, txtID 'SatzartB mit gemerkter ID ausgeben
End If
Loop

' Dateien schliessen
Close #1, #2, #3

Exit Sub

err_txtTrenn:
MsgBox ("Fehler: " & Err.Number)
Close #1, #2, #3
End Sub

Hoffe, es hilft...

holgii

Jones
24.09.2001, 14:39
Hallo Holgii,
es hat geklappt!

Vielen,vielen Dank!