Top-Themen

Aktuelle Themen (A bis Z)

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

gelöst Datei auslesen und Datensätze zusammenfassen

Mitglied: 48507

48507 (Level 2)

06.11.2012, aktualisiert 13:36 Uhr, 3090 Aufrufe, 13 Kommentare

Moin!

Ich habe eine Datei, die so aufgebaut ist:

01PersonalnummerX NameNachnameWohnort 
02PersonalnummerX AndereDaten Daten 
05PersonalnummerX AndereDaten Daten 
01PersonalnummerY NameNachnameWohnort 
02PersonalnummerY AndereDaten Daten 
06PersonalnummerY DatenDaten 
08PersonalnummerY DatenDaten
Zu der Datei gehört eine Beschreibung, in der steht, wie lang eine Spalte ist. Ich muss also die "Strings" auseinander nehmen.

01 markiert immer den Datensatz-Anfang (Stammdaten), alles, was dahinter kommt, sind "historische" Daten.

Problem: Wenn ich die Datei zeilenweise auslese, wie kann ich dann die historischen Daten "anhängen"? Ziel: Eine CSV-Datei, die dann so aussieht:

01;PersonalnummerX;Name;Nachname;Wohnort;02;PersonalnummerX;AndereDaten;Daten;05;PersonalnummerX;AndereDaten;Daten 
01;PersonalnummerY;Name;Nachname;Wohnort;02;PersonalnummerY;AndereDaten;Daten;06PersonalnummerY;Daten;Daten;08;PersonalnummerY;Daten;Daten
Die Personalnummer ist eindeutig. Zeilenweise einlesen ist auch kein Problem. Jedoch: Wie hänge die Daten hinten dran?

Jemand eine Idee?

Danke!
Mitglied: andimue
06.11.2012 um 13:02 Uhr
Servus sputnik,

in was für eine "Sprache" willst du denn die csv erstellen: vbs, batch, powershell oder ist das egal?

Also im Batch würde ich die Datei Zeile für Zeile lesen und mir eine Variable aufbauen, die ich solange ergänze, bis der nächste 01-Satz kommt, dann kannst du die Variable in eine Datei ausgeben.
Das Problem wird wohl eher das Zerlegen anhand der "Beschreibung" sein. Ist diese Beschreibung fix oder kann die sich immer mal wieder ändern?
Bitte warten ..
Mitglied: 48507
06.11.2012, aktualisiert um 13:27 Uhr
Die Beschreibung ist fix, jedenfalls im Moment. Hm, ich stehe auf dem Schlauch. An welcher Stelle genau muss ich das Array füllen? Bin soweit gekommen:

01.
    Do Until objTextFile.AtEndOfStream 
02.
         
03.
		ZeileTemp = objTextFile.Readline 
04.
						 
05.
		IF InStr(Left(ZeileTemp,2), "01") THEN 
06.
									 
07.
			FertigeZeile = Mid(ZeileTemp,1,2) _ 
08.
			& ";" & trim(Mid(ZeileTemp,3,12)) _ 
09.
                        .... 
10.
                        .... 
11.
			objFile.WriteLine FertigeZeile 
12.
				 
13.
                END IF 
14.
		 
15.
    Loop 
16.
 
Muss wohl die Zeilen vorher zählen? Die Anzahl der historischen Zeilen ist variabel.
Bitte warten ..
Mitglied: TsukiSan
06.11.2012, aktualisiert um 13:26 Uhr
Das Problem wird wohl eher das Zerlegen anhand der "Beschreibung" sein.
Ich sehe das Problem bei folgendem:
die fertige CSV-Datei soll so aufgebaut sein:
01;PersonalnummerY;Name;Nachname;Wohnort;02;PersonalnummerY;AndereDaten;
Wenn nicht klar definiert ist, wie die ; hinkommen, da wird es eng werden

Gruss
Tsuki
Bitte warten ..
Mitglied: 48507
06.11.2012 um 13:28 Uhr
Definiert ist es in der "Beschreibung". Bsp: Feld1: Länge 2, von 1 bis 2. Die Beschreibung ist aber nicht das Problem...
Bitte warten ..
Mitglied: TsukiSan
06.11.2012, aktualisiert um 13:34 Uhr
Hallo sputnik,

bei der "ersten" Zeile 01 hast du mittels
01.
mid(,1,2) 
02.
'und 
03.
mid(,3,12)
definiert, wie das da aussieht.
Wie und wo soll das ; danach gesetzt werden? Gibt es im Datensatz
Trennzeichen ?

Gruss
Tsuki
Bitte warten ..
Mitglied: 48507
06.11.2012, aktualisiert um 13:40 Uhr
Das ; wird ergänzt durch:

01.
& ";" &
Trennzeichen gibt es eben nicht, aber dank der Beschreibung weiß ich, wo ein Feld zu Ende ist... deswegen auch das mid().
Bitte warten ..
Mitglied: TsukiSan
06.11.2012 um 14:08 Uhr
Nun, dann würde ich das ganze in "Pakete" aufteilen und dann die einzelnen Zeilen drinnen "zusammenfassen".

Beispiel:
01.
Set FSO = CreateObject("Scripting.FileSystemObject") 
02.
MeineDaten = Split(FSO.OpenTextFile("MeineDatenbank.db", 1).ReadAll,"01")
Das jetzige Array MeineDaten hat nun alle anderen Daten zwischen "01" enthalten.
Diese könnten dann mittels
01.
For i = 0 to Ubound(MeineDaten) 
02.
MeinDatensatz = Split(MeineDaten(i),vbrclf) 
03.
'...weitere Aufsplittung und Zusammenführung 
04.
Next
zusammengefügt werden. JOIN wäre eine Möglichkeit.

Guss
Tsuki
Bitte warten ..
Mitglied: 48507
06.11.2012 um 14:17 Uhr
01 kann aber auch in den Daten stehen, z.B. in Datumsangaben. Trotzdem danke
Bitte warten ..
Mitglied: TsukiSan
06.11.2012 um 14:35 Uhr
Dann natürlich zeilenweise einlesen und zusammenfügen.
Sorry, aber ich glaubte, es gäbe eine einfachere Lösung für dich.

Deine Anforderung gibt zu viele Möglichkeiten. Das kann eine CPU "wuschig" machen.
Eventuell hat jemand die Blitzidee.

Viele Grüße

Tsuki
Bitte warten ..
Mitglied: pieh-ejdsch
06.11.2012 um 15:11 Uhr
moin,

Zu der Datei gehört eine Beschreibung, in der steht, wie lang eine Spalte ist. Ich muss also die "Strings" auseinander nehmen.
Und wie sieht davon eine Zeile aus?
Anhand dieser kann doch jede Spalte abgezählt werden.

Gruß Phil
Bitte warten ..
Mitglied: bastla
06.11.2012, aktualisiert um 15:22 Uhr
Hallot sputnik!

Nur ganz nebenbei:
01 kann aber auch in den Daten stehen, z.B. in Datumsangaben.
Die Kombination
vbNewline & "01"
aber wohl eher nicht ; dann wäre nur zu beachten, dass im ersten Arrayelement das "01" am Anfang übergangen wird:
MeineDaten(0) = Mid(MeineDaten(0), 3)
Grüße
bastla
Bitte warten ..
Mitglied: 48507
07.11.2012, aktualisiert um 15:19 Uhr
Also ich habe es jetzt so gemacht:

- Datensätze jeweils in eine Datei ausgelagert (pro Personalnummer)
- Zeilenumbrüche aus der Datei entfernt
- aus diesen Dateien eine zusammengesetzt

Ist vielleicht bescheuert, funktioniert aber (Ich hab's nicht so mit VBScript)

Weiß einer zufällig, ob man direkt beim Zusammensetzen der Variablen eine Überprüfung machen kann (Wenn "-" vorhanden, dann setzte es nach Vorne)? Oder muss ich über Zwischenvariablen gehen (bei so vielen - sehr mühsam...).

Wahrscheinlich nicht, oder? Siehe oben im Quelltext, Zeilen 7-10.
Bitte warten ..
Mitglied: TsukiSan
07.11.2012, aktualisiert um 15:34 Uhr
Hallo sputnik,

Also ich habe es jetzt so gemacht:

Wie hast du es so gemacht?

Lass uns teilhaben an deinem Tun und wir helfen.

Viele Grüsse

Tsuki
Bitte warten ..
Ähnliche Inhalte
VB for Applications

Excel: Makro soll mehrer Dateien auslesen und in einer neuen Datei zusammenfassen

Frage von Michelle1995VB for Applications12 Kommentare

Hallo zusammen, ich suche ein Makro, mit dem ich aus mehreren Exceltabellen, die alle in einem Verzeichnis liegen, die ...

VB for Applications

VBA Excel Dateien zusammenfassen

Frage von cberndtVB for Applications3 Kommentare

Hi Leute. Ich bin dabei einen Ordner mit Excellisten zusammenzufassen. Im Ordner sind gut 600 einzelne Excel Dateien die ...

VB for Applications

Ordner mit mehreren csv. Dateien in eine Excel Datei zusammenfassen

gelöst Frage von Metal008VB for Applications23 Kommentare

Hallo, ich stehe vor folgendem Problem. Ich möchte enorme Datenmengen in eine Excel, oder auch Access Datei zusammenfassen. Ich ...

KiXtart

PDF-Dateien zusammenfassen und als Postscript auf drucker schicken

Frage von KLBlerKiXtart

Hallo zusammen, ich habe folgendes Problem; ich erhalte PDF-Daten von unserem ERP-System, diese landen in einer Verzeichnisfreigabe. Anschließend starte ...

Neue Wissensbeiträge
Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 10 StundenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 10 StundenSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 13 StundenMicrosoft3 Kommentare

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 1 TagWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

Heiß diskutierte Inhalte
Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server40 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Router & Routing
ISC DHCP 2 Subnetze
gelöst Frage von janosch12Router & Routing19 Kommentare

Hallo, ich betreibe bei mir im Netzwerk einen ISC DHCP Server auf Debian, der DHCP verwaltet aktuell ein /24 ...

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...