Access2000 Lieferscheindaten aus ASCII Datei importieren
Hi!
Ich möchte Lieferscheindaten aus eine ACII Datei in Access importieren.
Die Ursprungsdateien haben feste Feldlängen wobei erst die Kopfdaten (Datum, LS-Nr., Bestellnr. etc.) und dann 1:N die Detaildaten beinhaltet sind.
Die Kopfdaten sollen in eine Tabelle und die Detaildaten in eine zweite Tabelle importiert werden.
Wie stelle ich das an?
Benötige ich da 2 Importdefinitionen? Wenn ja, wie sage ich der 1. Routine, daß sich nach den Kopfdaten stoppen und wie der 2. Routine, daß sie erst an Stelle xx (nach Ende der Kopfdaten) mit dem einlesen beginnen darf?
Momentan steh ich ganz schön auf dem Schlauch, vielleicht könnt ihr mir helfen.
ciao
Ich möchte Lieferscheindaten aus eine ACII Datei in Access importieren.
Die Ursprungsdateien haben feste Feldlängen wobei erst die Kopfdaten (Datum, LS-Nr., Bestellnr. etc.) und dann 1:N die Detaildaten beinhaltet sind.
Die Kopfdaten sollen in eine Tabelle und die Detaildaten in eine zweite Tabelle importiert werden.
Wie stelle ich das an?
Benötige ich da 2 Importdefinitionen? Wenn ja, wie sage ich der 1. Routine, daß sich nach den Kopfdaten stoppen und wie der 2. Routine, daß sie erst an Stelle xx (nach Ende der Kopfdaten) mit dem einlesen beginnen darf?
Momentan steh ich ganz schön auf dem Schlauch, vielleicht könnt ihr mir helfen.
ciao
Please also mark the comments that contributed to the solution of the article
Content-Key: 30818
Url: https://administrator.de/contentid/30818
Printed on: April 26, 2024 at 15:04 o'clock
9 Comments
Latest comment
Die Ursprungsdateien haben feste Feldlängen wobei erst die Kopfdaten
(Datum, LS-Nr., Bestellnr. etc.) und dann 1:N die Detaildaten beinhaltet sind.
(Datum, LS-Nr., Bestellnr. etc.) und dann 1:N die Detaildaten beinhaltet sind.
Wenn Du von festen Feldlängen sprichst muss man davon ausgehen, dass bei den Detaildaten die Kopfdaten jeweils wiederholt werden. Dann ist das doch kein wirkliches Problem. Oder meinst Du, dass die Kopfdaten des ersten Lieferscheins angezeigt werden, danach dessen Detaildaten und dann wieder die Kopfdaten des zweiten Lieferscheins usw.? Dann hast Du keine festen Feldbreiten und ACCESS wird - zumindest ohne VBA - nie wissen/lernen, wann die Kopfdaten zu Ende sind und die Detaildaten beginnen. Vielleicht kannst Du einen Auszug posten?
Oder meinst Du, dass die Kopfdaten des ersten Lieferscheins angezeigt werden, danach dessen Detaildaten und dann wieder die Kopfdaten des 2ten Lieferscheins usw.?
> Genau so meine ich das. Jeder Lieferschein kann 1:N Detailsätze enthalten.
> Genau so meine ich das. Jeder Lieferschein kann 1:N Detailsätze enthalten.
Aber fangen nach den Detailsätzen des ersten Lieferscheins wirklich wieder die Kopfdaten des zweiten Lieferscheins an? Falls ja gibt es keine Lösung.
Ich müsste lediglich wissen, wie man Access beibringt mittels einer hinterlegten Importdefinition eine Datei bis zur X. Stelle zu lesen und ab dieser Stelle mit einer anderen Importdefinition weiterzumachen. Bei EOF muss die 2. dann aufhören.
Das hört sich allerdings wieder so an, als wenn erst alle Kopfdaten aller Lieferscheine in der Datei stehen und daran anschliessend alle Detaildatensätze aller Lieferscheine. Die in Access angebotenen Importfunktionen helfen Dir nicht weiter. Du kannst weder deren Geltungsbereich auf Datensätze beschränken noch kannst Du innerhalb eines Imports die Definition wechseln.
Ich denke egal wie: Deine Lösung heisst VBA.
Hallo,
ich kenne das Problem mit unterschiedlichen Satzlängen in Textdateien - allerdings bei SQL-Server. Ich habe das Problem so gelöst, dass ich die Textdatei zuerst komplett in eine Tabelle mit nur einer Spalte importiere (Trennzeichen z.B. TAB, das nicht enthalten ist - Zeilenende CR+LF). Anschließend wird eine oder werden mehrere Tabellen über entsprechendes SQL Befehle befüllt (substring() bzw. bei Access mid()). Das geht schneller und eleganter als ein großer Programmieraufwand.
Bei Access hast du natürlich das Problem, dass ein Feld nur max. 255 Zeichen breit sein kann. Wenn das zu wenig ist, dann definiere einfach mehrere Felder von dieser Breite und füge sie dann notfalls wieder teilweise zusammen.
Ich hoffe, der Tipp war zumindest eine Anregung für neue Ideen.
Gruß
Olaf
ich kenne das Problem mit unterschiedlichen Satzlängen in Textdateien - allerdings bei SQL-Server. Ich habe das Problem so gelöst, dass ich die Textdatei zuerst komplett in eine Tabelle mit nur einer Spalte importiere (Trennzeichen z.B. TAB, das nicht enthalten ist - Zeilenende CR+LF). Anschließend wird eine oder werden mehrere Tabellen über entsprechendes SQL Befehle befüllt (substring() bzw. bei Access mid()). Das geht schneller und eleganter als ein großer Programmieraufwand.
Bei Access hast du natürlich das Problem, dass ein Feld nur max. 255 Zeichen breit sein kann. Wenn das zu wenig ist, dann definiere einfach mehrere Felder von dieser Breite und füge sie dann notfalls wieder teilweise zusammen.
Ich hoffe, der Tipp war zumindest eine Anregung für neue Ideen.
Gruß
Olaf
...ich verstehe das Szenario anders...
Nach meinem Verständnis sind in der Importdatei 2 Satzarten mit jeweils fester Feldlänge/Satzlänge enthalten.
Ist dem so, könnte es einfacher sein, die Quelldaten vorher auf CMD-Ebene nach Satzart "Kopfdaten" und Satzart "Detaildaten" zu trennen - garnatiert ist irgendwo die Information bzgl. Satzart im Satzformat enthalten.
Das dürfte dann - mit zwei Import-Definionen in zwei Tabellen schneller und wartbarer laufen als Olafs (auch funktionierender) Ansatz.
Gruß
Biber
Nach meinem Verständnis sind in der Importdatei 2 Satzarten mit jeweils fester Feldlänge/Satzlänge enthalten.
Ist dem so, könnte es einfacher sein, die Quelldaten vorher auf CMD-Ebene nach Satzart "Kopfdaten" und Satzart "Detaildaten" zu trennen - garnatiert ist irgendwo die Information bzgl. Satzart im Satzformat enthalten.
Das dürfte dann - mit zwei Import-Definionen in zwei Tabellen schneller und wartbarer laufen als Olafs (auch funktionierender) Ansatz.
Gruß
Biber