German Mehrere CSV-Dateien laden

Ida

Member
Licensed User
Longtime User
Hallo,

kann man mehrere CSV-Dateien laden, dann z. B. in einer Listview-Tabelle anzeigen lassen, evtl. Änderungen/Ergänzungen anfügen und dann alle als CSV wieder speichern?
Diese CSV-D. hängen teilweise von einander ab - so etwas "halb Relationales".

Danke für jede Antwort und Hilfe.

Ida
 
D

Deleted member 103

Guest
Hallo Ida,

ann man mehrere CSV-Dateien laden, dann z. B. in einer Listview-Tabelle anzeigen lassen, evtl. Änderungen/Ergänzungen anfügen und dann alle als CSV wieder speichern?
Ja! Einfach so:

'alle Datei in eine Tabelle laden
lv.RemoveAllRows 'Inhalt von Listview löschen
lv.LoadCSV("Test-1.csv","|",True,True) ' 1.Datei
lv.LoadCSV("Test-2.csv","|",True,True) ' 2.Datei
lv.LoadCSV("Test-3.csv","|",True,True) ' 3.Datei
...

'alles in eine Datei speichern
lv.SaveCSV("Test-4.csv","|",True)

ich denke das sollte für erste helfen.


Ciao,
Filippo
 

Ida

Member
Licensed User
Longtime User
Hallo Filippo,

Hallo Ida,


Ja! Einfach so:

'alle Datei in eine Tabelle laden
lv.RemoveAllRows 'Inhalt von Listview löschen
lv.LoadCSV("Test-1.csv","|",True,True) ' 1.Datei
lv.LoadCSV("Test-2.csv","|",True,True) ' 2.Datei
lv.LoadCSV("Test-3.csv","|",True,True) ' 3.Datei
...

'alles in eine Datei speichern
lv.SaveCSV("Test-4.csv","|",True)

ich denke das sollte für erste helfen.


Ciao,
Filippo

ich danke Dir für Deinen Beitrag! Werde ich morgen probieren und dann hier meine Erfolge (oder Mißerfolge?) melden.

Gruß

Ida
 

klaus

Expert
Licensed User
Longtime User
Hallo Filippo,

Ida's Frage hat mich auch interessiert, und habe zu esrt mit dem Table Control versucht und dann mit Deiner ListView Library.

Ich habe da einige Unterschiede gesehen zwischen den LoadCSV Funktionen der beiden Controls.
- mit ListView1.LoadCSV(AppPath&"\Test1.csv",";",True,True)
wäre es schön wenn sich die Spaltenbreite auf die Headertextbreite anpassen würde
- mit ListView1.LoadCSV(AppPath&"\Test1.csv",";",False,True) und mit ListView1.LoadCSV(AppPath&"\Test1.csv",";",False,False)
ist kein Unterschied.

Sollten beide Controls nicht ähnliche Funktionsweisen haben ?

Beiliegend ein kleines Testprogramm zum Vergleich.


Hallo Ida,
In Filippo's Beispiel zum Anhängen einer 2ten CSV Datei muss die 2te LoadCsv Linie so heissen
lv.LoadCSV("Test-2.csv","|",True,False) ' 2.Datei
wenn es eine HeaderLinie in der Datei gibt, oder
lv.LoadCSV("Test-2.csv","|",False,False) ' 2.Datei
wenn es keine HeaderLinie in der Datei gibt,

aber nicht so:
lv.LoadCSV("Test-2.csv","|",True,Tue) ' 2.Datei
denn in diesem Fall werden 3 neue Spalten erstellt

Beste Grüsse.
 

Attachments

  • Table_ListView_Controls.sbp
    2.4 KB · Views: 280
D

Deleted member 103

Guest
Hallo Klaus,

Danke für das richtig stellen!
Ich hatte es auf die schnelle, ohne Testen, geschrieben.


Ciao,
Filippo
 
D

Deleted member 103

Guest
Hast Du mal auf die unterschiedlichen Funktionsweisen zwischen Table.LoadCSV und ListView.LoadCSV geschaut ?
welche unterschied? Ich denke die Funktion ist genau gleich.
 

klaus

Expert
Licensed User
Longtime User
Hallo Filippo,

In meinem Post #4, habe Ich versucht die Unterschiede zu erklären.
Das Testprogramm zeigt sie besser als lange Texte.

Load1 läd eine erste Datei.
Mit den RadioButtons kann man die 4 Möglichkeiten für True und False für die 'Header Exist' und 'Create Columns' wählen.
Load 2 läd eine zweite Datei.

Beste Grüsse.
 
Last edited:
D

Deleted member 103

Guest
Hallo Klaus,

probiere mal auf dem Device, da funktioniert es richtig!

Das Listview-Control hat den Vorteil das man mehrere Dateien hinzu laden kann.
Natürlich wenn die Parameter "True,True" sind, wird eine vorhandene HeaderLinie erstellt/hinzugefügt.


Ciao,
Filippo
 

klaus

Expert
Licensed User
Longtime User
Hallo Filippo,

Ich habe das Testprogramm jetzt auch auf dem Device getestet.
Es läuft auf dem Device gleich wie auf dem Desktop.
Ich habe die Unterschiede in der beiliegenden Textdatei beigefügt, musste es leider so machen da der Text im Post nicht akzepriert wurde, zu lang.

Das Table Control erlaubt auch mehrere Dateien hinzu zu laden.

Beste Grüsse.

 

Attachments

  • Unterschiede_Table_ListView.txt
    2.3 KB · Views: 267
D

Deleted member 103

Guest
Hallo Klaus,

Das heisst auch dass mit
ListView1.LoadCSV(AppPath&"\Test1.csv",";",True,True)
und nachher
ListView1.LoadCSV(AppPath&"\Test2.csv",";",True,False)
oder
ListView1.LoadCSV(AppPath&"\Test2.csv",";",False,True)
oder
ListView1.LoadCSV(AppPath&"\Test2.csv",";",False,False)
gleich funktionieren, kein Unterschied ? !
in diese Reihenfolge ist es vollkommen richtig das es kein Unterschied geben darf!

Hier meine kurze erklärung:
1. eine HeaderLinie ist vorhanden und es soll erstellt werden.
2. eine HeaderLinie ist vorhanden und es soll nicht erstellt werden.
3. eine HeaderLinie ist nicht vorhanden und es soll erstellt werden(geht aber nicht weil kein HeaderLinie vorhanden ist).
4. eine HeaderLinie ist nicht vorhanden und es soll nicht erstellt werden.

PS. das Listview-Control ist nicht und kann auch nicht in alle Funktionen gleich sein wie eine Table-Control.


Ciao,
Filippo
 

klaus

Expert
Licensed User
Longtime User
Hallo Filippo,

Ich komme noch mal zur ListView Funktionalität zurück.

Ich finde dass Fall 4
ListView1.LoadCSV(AppPath&"\Test1.csv",";",False,False)
nicht richtig funktioniert.

In diesem Fall hat die zu ladente Datei keine Headerzeile, also beinhaltet die erste Zeile Daten, aber ListView läd sie nicht.

Ich habe das Testprogramm etwas geändert um es zu zeigen.
Die Datei Test3.csv beinhaltet 3 Zeilen aber ohne Headerzeile, wenn man sie mit läd
ListView1.LoadCSV(AppPath&"\Test3.csv",";",False,False)
fehlen die Daten 5;6;7 der ersten Zeile!

Beste Grüsse.
 

Attachments

  • Table_ListView_Controls.zip
    1.2 KB · Views: 279

Ida

Member
Licensed User
Longtime User
Hallo Filippo und Klaus,

jetzt habe ich mal bei mir ausprobiert, was ich erreichen wollte:

mehrere CSV-Dateien, die relativ zusammenhängen, zu laden etc
Deshalb schrieb ich ja "halb relational".
Eine CSV enthält alle Spalten, eine andere CSV enthält z. B. nur die Spalte Hersteller. Diese CSV-D. erhalte ich durch Umwandlung von PalmOS-PDB-Dateien.
"Mein" Beispiel Lizenzen habe ich angefügt. Da hatte mir specci48 schon sehr geholfen.

Könntet Ihr freundlicherweise bitte einen Blick drauf werfen?

Vielen Dank!

Gruß
Ida
 

klaus

Expert
Licensed User
Longtime User
Hallo Ida,

So wie Ich das sehe hättest Du 2 Möglichkeiten:
- mit SQL DataBase zu arbeiten und nicht mit csv Dateien.
Hier kenne Ich mich allerdings leider nicht aus.

- mit den verschiedenen Dateien die Du schon hast zu arbeiten.
Hier schon mal einige Bemerkungen:
- die Liz-Hersteller Datei ist ja eigentlich eine einfache Text Datei da nur ein Eintrag pro Zeile drin ist.
- Du kannst nicht die Lizenzen Datei mit der Liz-Hersteller Datei verknüpfen.
Was Du machen müsstest ist in der Editierform die TextBox für den Hersteller durch eine ComboBox zu ersetzen und den Inhalt der Liz-Hersteller Datei in die ComboBox einfügen.
Dann hat der Benützer nur die Auswahl der vorgegebenen Hersteller.
Du musst aber dann noch die Möglichkeit geben einen neuen Hersteller hinzufügen zu können. Das ist möglich mit dem Text Parameter der ComboBox und einem Button zum anfügen, oder mit eine extra Editierform mit mehr Möglichkeiten.
Ein Beispiel gibt es hier: http://www.b4x.com/forum/german-forum/1421-expense-tracker.html

Das gleiche gilt natürlich auch für die anderen Spalten.

Beste Grüsse.
 

specci48

Well-Known Member
Licensed User
Longtime User
Hallo zusammen,

während Villa Riba schon feiert, wird in Villa Bacho noch geschrubbt... ähem... :)

Während Klaus seine Antwort gepostet hat, habe ich noch ein wenig am Programm herumgespielt (siehe Anhang).

Meine Veränderungen treffen dabei genau die Aussagen von Klaus:
1. Die Hersteller werden jetzt nur noch einmal am Programmanfang gelesen
2. Die Combobox wird jetzt nur noch einmal am Programmanfang gefüllt
3. Das Feld txtHersteller habe ich gelöscht
4. Die Combobox mit den Herstellern ist an die Stelle des Textfeldes gerutscht
5. Bei einer Neuaufnahme wird immer der erste Hersteller vorbelegt
6. Bei einer Änderung wird immer der Hersteller aus dem Datensatz vorbelegt

Was Dir (Ida) jetzt noch fehlt ist die auch von Klaus angesprochene Möglichkeit, die Hersteller in der Combobox zu editieren. Am Besten per separater Form (siehe Beispiel von Klaus).
Kleiner Tipp am Rande:
Falls Du die Möglichkeit vorsehen möchtest, einen Hersteller aus der Combobox auch zu löschen, vorher erst in der eigentlichen Datendatei prüfen, ob der Hersteller nicht irgendwo noch verwendet wird. Ansonsten läuft das Programm nämlich auf einen Fehler, wenn man den betroffenen Datensatz anzeigen/ändern will.


Viele Grüße
specci48
 

Ida

Member
Licensed User
Longtime User
Hallo Klaus,

Hallo Ida,

So wie Ich das sehe hättest Du 2 Möglichkeiten:
- mit SQL DataBase zu arbeiten und nicht mit csv Dateien.
Hier kenne Ich mich allerdings leider nicht aus.

- mit den verschiedenen Dateien die Du schon hast zu arbeiten.
Hier schon mal einige Bemerkungen:
- die Liz-Hersteller Datei ist ja eigentlich eine einfache Text Datei da nur ein Eintrag pro Zeile drin ist.
- Du kannst nicht die Lizenzen Datei mit der Liz-Hersteller Datei verknüpfen.
Was Du machen müsstest ist in der Editierform die TextBox für den Hersteller durch eine ComboBox zu ersetzen und den Inhalt der Liz-Hersteller Datei in die ComboBox einfügen.
Dann hat der Benützer nur die Auswahl der vorgegebenen Hersteller.
Du musst aber dann noch die Möglichkeit geben einen neuen Hersteller hinzufügen zu können. Das ist möglich mit dem Text Parameter der ComboBox und einem Button zum anfügen, oder mit eine extra Editierform mit mehr Möglichkeiten.
Ein Beispiel gibt es hier: http://www.b4x.com/forum/german-forum/1421-expense-tracker.html

Das gleiche gilt natürlich auch für die anderen Spalten.

Beste Grüsse.

vielen Dank für Deine Bemühungen!
Ich werde mir morgen Dein expense-tracker anschauen. Bestimmt lerne ich da wieder eine Menge!
Danke und Gruß

Ida (nicht aus der Grube Messel und keine 47 Mil. Jahre alt) - hier sollte der Smilie im Kopf hin
 
Last edited:

specci48

Well-Known Member
Licensed User
Longtime User
Hallo Ida,

aufgrund Deiner letzten Anwort (und den Zeiten der Postings sowie kein erfolgter Download des Anhangs) gehe ich mal davon aus, dass Du meinen Post #15 übersehen hast.
Daher dieser Zusatzpost, damit der Thread für Dich wieder als ungelesen erscheint... :cool:


Viele Grüße
specci48
 

Ida

Member
Licensed User
Longtime User
Hallo specci48,

Hallo Ida,

aufgrund Deiner letzten Anwort (und den Zeiten der Postings sowie kein erfolgter Download des Anhangs) gehe ich mal davon aus, dass Du meinen Post #15 übersehen hast.
Daher dieser Zusatzpost, damit der Thread für Dich wieder als ungelesen erscheint... :cool:


Viele Grüße
specci48

vielen Dank für Deine Hilfe - und die Erinnerung! Ich hatte Deinen 1. Beitrag überhaupt nicht gesehen, als nicht einmal übersehen, also noch schlimmer.
Entschuldigung!:sign0013:
Werde nachher alles ausprobieren - und natürlich Rückmeldung bringen.

Gruß

Ida
 

Ida

Member
Licensed User
Longtime User
Hallo Klaus,

Ein kleines Beispiel zum 'handling' von ComboBoxen und ListBoxen findest Du im beigelegten Programm.

Beste Grüsse.

auch Dir wieder vielen Dank für die Hilfe!
Werde ich auch nachher probieren und dann melden, wie es ging.

Gruß

Ida
 
Top