Das OFFIZIELLE PROFAN SUPPORT FORUM
Einsteigerfragen
PROFAN-Programmierung
Helfer & Tools
Anregungen & Vorschläge
PROFAN-NEWS
Die Regeln!
1 - Einsteigerfragen

 Neues Thema  |  Zur Übersicht  |  Suchen  |  Einloggen   Neuerer Beitrag  |  Älteres Thema 
 CSV Laden
Autor: PapaToni (---.hsi08.unitymediagroup.de)
Datum:   16.07.16 14:32

Hallo zusammen,
nach langer Zeit wollte ich mich mal einem neuen Thema zuwenden und verzweifle daran. Ich hoffe Ihr könnt mir helfen.
Ich möchte eine Datei laden Daten.csv, diese liegt im gleichen Verzeichnis wie dann das Programm.
Der Aufbau der Daten.csv variiert aber und so habe ich mir eine Lösung einfallen lassen, die ich aber auch nicht umsetzen kann, da fehlt mir doch wohl einiges. Ich habe auch schon auf bestimmten Seiten geschaut aber nichts gefunden was mir hilft.
Aufbau der Daten.csv
"Nr";"Name";"Vorname" = anzahl der ersten Spalte Datensätze variert, sowie die Bezeichnungen und es können sogar noch mehr Feldnamen entstehen
"@1@","Mustermann";"Max" = 2 Spalte und natürlich auch die anderen

Jetzt hatte ich mir so etwas vorgestellt um flexibel zu bleiben):
1. Datei öffnen zum lesen
2. erste Spalte einlesen
3. Zählen von ";" (in diesem Fall 2, sind aber 3 Datensätze) also +1 dazu
4. Variabeln festlegen = A1(Zahl von ";") = Nr
A2 = Name
A3 = Vorname usw. usw. für später
5. Listbox mit Ausgabe A1 = Name usw.
6. Einlesen von Anzahl Datensätze
@1@ = @ beide wegnehmen, zuordnen Nr1, Name1, Vorname1
bis Ende z.B. @156@ = Nr156, Name156, Vorname156
7. Zuordnen der Datensätze
Nr1 = 1, Name1 = Mustermann, Vorname = Max
bis Ende 156 = Nr156 = 156, Name156 = Musterfrau, Vorname156 = Elsa
8. Listbox mit Ausgabe der Datensätze
9. Datei schließen
10. entsprechende Ausgaben erstellen

Wenn das so klappt könnte ich für spätere Änderungen der csv-Datei flexibel bleiben.
Aber irgendwie finde ich keinen Ansatz um das umzusetzen.

Habt ihr einen Vorschlag bzw. eine bessere Lösung ?
Arbeite mit XPROFAN 10.0

Danke
PapaToni

XProfan 10.0

Beitrag beantworten
 
 Re: CSV Laden
Autor: Heinz Brill (---.dip0.t-ipconnect.de)
Datum:   16.07.16 19:30

In deiner Signatur sehe ich, daß du XProfan Version 10
nutzt. Mit der neuen X3 geht so manches eleganter, z.B.
Move("FileToList",...), wo die Datei in einem Rutsch in die
Listboxliste eingelesen wird.

Aber nun zum Thema :

So eine .csv Datei ist nun einmal etwas starr, was die
Feldnamen betrifft. Man könnte natürlich hingehen und
einen Durchlauf zum Lesen starten. Eine Variable wird
in der Whileschleife bei jedem Lesen um 1 incrementiert.
Somit hätte man schon die Anzahl der Datensätze. Eine
andere Variable zählt bei jedem Datensatz die Kommas.
Wenn mehr Kommas da sind, als schon in der Variablen
stehen, wird die Variable erhöht.

Wenn es keine tausende von Datensätzen sind, könnte
man auch eine Ini-Datei benutzen. Sowas hatte ich auch
schonmal gemacht. Man muß nur als Rubriknamen Zahlen
benutzen, damit man die Datensätze auch später wieder
rausziehen kann. Auch ein bestimmtes Format ist dann
einzuhalten. Also

 [Datensätze]
 Anzahl = 2
 [1]
 Felder = "2"
 Feldnamen = "Name,Vorname"
 Name = "Mustermann"
 Vorname = "Max"
 [2]
 Felder = "3"
 Feldnamen = "Name,Vorname,Beruf"
 Name = "Musterfrau"
 Vorname = "Elsa"
 Beruf = "Hausfrau"
 


Beim Neuanlegen der Inidatei sollte eine solche auch vorhanden sein.
Auch die Rubrik [Datensätze] sollte da sein. Also einfach mit einem
Texteditor folgenden Inhalt als Inidatei speichern :
 [Datensätze]
 Anzahl = 0
 


Wenn man nun als erstes mit ReadIni die Anzahl Datensätze
liest, weiß man genau, wieviel in der Inidatei stehen.
Wenn man einen neuen DS schreibt, wird in der Rubrik [Datensätze]
um 1 erhöht.

Man kann also gut mit einer WhileLoop-Schleife durch die Inidatei iterieren.
Vorsorglich habe ich oben noch Feldnamen eingebaut. Durch Ermittlung
der Felder kann man die Anzahl Felder des jeweiligen Datensatzes
ermitteln. Da die Feldnamen ja auch mitgegeben worden sind, kann
man die Anzahl der ReadIni Operationen genau steuern.
Das Ermitteln der Einträge durch ReadIni kann leicht mit SubStr$()
rausgefiltert werden. Man dimensioniert ein Array mit der Anzahl, die in
Felder steht. In einer Schleife füllt man es dann mit den Feldnamen.
Mit einer weiteren Schleife liest man dann mit ReadIni.

Natürlich müssen die Felder und Feldnamen beim Schreiben
mit Writini mitgegeben werden.

Vielleicht wäre das eine Lösung für dich.

H.Brill
XProfan X4 + FreeProfan

Nachricht bearbeitet (16.07.16 19:53)

Beitrag beantworten
 Foren-Liste  |  Baumstruktur   Neuerer Beitrag  |  Älteres Thema 


 Foren-Liste  |  Zur Registrierung 
 Benutzerlogin
 Benutzername:
 Passwort:
 Login-Daten speichern:
   
 Passwort vergessen?
E-Mail-Adresse oder Username unten eingeben. Dann wird Dir per e-Mail ein neues Passwort zugeschickt.

phorum.org