Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Access2000 Lieferscheindaten aus ASCII Datei importieren

Frage Entwicklung Datenbanken

Mitglied: Rashtamoon

Rashtamoon (Level 1) - Jetzt verbinden

20.04.2006, aktualisiert 21.04.2006, 4922 Aufrufe, 9 Kommentare

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
Mitglied: verkehrsberuhigt
20.04.2006 um 16:37 Uhr
Die Ursprungsdateien haben feste Feldlängen wobei erst die Kopfdaten
(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?
Bitte warten ..
Mitglied: Rashtamoon
20.04.2006 um 16:50 Uhr
Hi!

Oder meinst Du, dass die Kopfdaten
des ersten Lieferscheins angezeigt werden,
danach dessen Detaildaten und dann wieder
die Kopfdaten des zweiten Lieferscheins
usw.?

Genau so meine ich das. Jeder Lieferschein kann 1:N Detailsätze enthalten.


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.

Verstehe ich nicht, warum habe ich deshalb keine festen Feldlängen?

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.

ciao
Bitte warten ..
Mitglied: verkehrsberuhigt
20.04.2006 um 18:59 Uhr
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.

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.
Bitte warten ..
Mitglied: olafsteffan
20.04.2006 um 23:27 Uhr
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
Bitte warten ..
Mitglied: Biber
21.04.2006 um 09:19 Uhr
...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
Bitte warten ..
Mitglied: Rashtamoon
21.04.2006 um 11:27 Uhr
Hallo zusammen,

vielen Dank für eure Hilfe.

Biber hat das Thema richtig formuliert, sorry für meine umständliche Darstellung.

Es handelt sich um 2 Satzarten (1 mal Kopfsatz, N mal Detailsatz) mit festen Feld/Satzlängen und in der Datensatzdefinition ist auch jeweils ein Qualifier definiert.

Ich muss mir jetzt mal die etwas unorthodoxe Datensatzdefinition reinziehen und herausfinden, ob der Qualifier auch eindeutig ist (Ich hab zwar eine Felddefinitionsliste die enthält aber keine Beschreibung der Inhalte (Zähler etc.)).

Wenn dem so ist, wie steuert man die Importroutinen dann, daß nur die Datensätze mit dem entsprechenden Qualifier integriert werden?

ciao
Rashtamoon
Bitte warten ..
Mitglied: Rashtamoon
21.04.2006 um 11:45 Uhr
Hallo noch mal,

Lt. Definition hab ich im Kopfsatz als Qualifier "LIEF" und in den Detailsätzen eine laufende, Nummer (1, 2, 3 etc.) jeweils auf Position 1.

Also zumindest den Kopfsatz kann ich eindeutig erkennen zuordnen.

Wie bring ich das Access jetzt bei?

ciao
Bitte warten ..
Mitglied: Rashtamoon
21.04.2006 um 13:43 Uhr
Hi nochmal,

ich bin ein Stück weiter:

Ich erstelle 2 Importroutinen, die erste liest nur die Kopfdaten ein und in der zweiten markiere ich die Kopfdaten mit "überspringen".

Funktioniert so ganz gut, leider wird halt nur der erste Detaildatensatz eingelesen, dann ist Schluss mit lustig....

Wie bringe ich das Ganze jetzt dazu weiterzumachen wenn noch weitere Detaildatensätze da sind?

Ich stelle mir das so vor, daß man abfragt ob noch Datensätze da sind (EOF oder so) und wenn ja die Spezifikation manipuliert (Startpos etc. hochsetzen) und dann noch mal laufen lässt.

Oder läuft das anders?

Wenn mir jetzt bitte noch jemand sagen kann, wie man gespeicherte Importspezifikationen im Nahhinein noch ändern kann wäre mir sehr geholfen.

Jedesmal wenn ich eine gespeicherte ändere und neu speichern will verwirft er mir meine Änderungen.

Vielen Dank noch mal für eure Unterstützung.

ciao
Bitte warten ..
Mitglied: Rashtamoon
21.04.2006 um 16:38 Uhr
Hallo Jürgen

Ich habe mich offensichtlich zu unklar ausgedrückt.

Pro Lieferschein wird eine Datei übertragen.

Die Lieferscheine haben eine unterschiedliche Anzahl an Positionen (Detaildaten).

Ich bin jetzt schon soweit, daß ich den Kopfsatz und die erste Lieferscheinposition importieren kann.

Mein Problem ist momentan das einlesen von eventuell vorhandenen weiteren Positionen.

Ich habe 2 Importroutingen geschrieben, die erste für die Kopfdaten und die zweite für die Detaildaten welche erst an Stelle 624 (nach den Kopfdaten) anfängt zu lesen.

Funktioniert alles.

Nur, weitere, eventuell vorhandene Detailsätze werden nicht integriert weil in der Importspezifikation ja ganz klar die Startposition eingetragen wird welche dann nicht mehr stimmt.

Ich denke mir, daß man die Importspezifikation in VBA in einer Schleife bis zum EOF laufen lassen muss und die Startpositionen jeweils um 624 hochzählt.

Aber wie das gehen soll ist mir im Moment leider völlig schleierhaft.

Kann man Importspezifikationen aus VBA manipulieren oder muss mann das ganze dann in VBA neu schreiben?

Gibt's da irgendwo Beispiele dafür? Ich würd mich da schon reinpfriemeln.

ciao & schönes Wochennede
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Datenbanken
gelöst PHPMyAdmin 38MB Datei importieren (6)

Frage von vServer zum Thema Datenbanken ...

VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

Datenbanken
gelöst 1GB phpMyAdmin SQL Datei in SQL Server 2008 R2 importieren (7)

Frage von Himpke zum Thema Datenbanken ...

Batch & Shell
CSV-Datei nach Excel importieren (5)

Frage von mrvfbnummer2 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...