| |
|
|
| Hallo Frank Da komme ich nochmal mit eine Frage...
Wenn ich eine dbf datei einlese, ist es möglich und fals ja, wie, z.b. das Datum zu formatiern, wenn es in der dbf steht 20020327 in 2002:03:27 umzuwandeln und in den Listview darstellen?
In meinen Listview habe ich es so,
Let Data$ = @dbGet$(DATUM) Let Data$ = @Mid$(Data$,7,2),:,@Mid$(Data$,5,2),:,@Mid$(Data$,1,4)
Dar bei Deinen Listview das einlesen automatisch im speicher geschieht, sehe ich noch nicht die Möglichkeit es zu formatieren
Danke für jeden Tip
Fernando |
|
|
| |
|
|
|
| Hallo Fernando,
das könnte ich als Flag realisieren, z.B. als Flag 2. Wäre dann Flag 2 gesetzt, dann würde das Datum automatisch in das neue Format übersetzt.
Wäre nicht schlecht, wenn du mir per Email eine dbf-Datei schickst, die Datums-Angaben enthält, dann könnte ichs besser testen.
Gruß, Frank |
|
|
| |
|
|
|
| Hallo zusammen
2002:03:27 ? Wäre es nicht besser umzusetzen in 2002.03.27 ?
@Fernando: Danke nochmal für die Datei !
Gruß, Frank |
|
|
| |
|
|
|
| Hallo,
so, hab das Flag jetzt eingebaut. Hier die neue Beschreibung der Funktion, ich hoffe das geht jetzt so in Ordnung:
DbfToCsv(B,A,S,Z,F)
Wandelt eine dBaseIII (.dbf) Datei um in eine CSV-Datei (im Speicher).
B : Long - Zeiger auf einen Bereich, in den mit ReadFileQuick() eine DBF-Datei geladen wurde. A : Long - Anzahl Bytes in B. S : Zeiger auf einen Bereich, der die Anzahl Spalten in der Dbf-Datei in B empfängt (Long-Int) oder 0. Z : Zeiger auf einen Bereich, der die Anzahl Zeilen in der Dbf-Datei in B empfängt (Long-Int) oder 0. F : Long - Flag.
Rückgabe-Ergebniss: Long - Anzahl generierter Bytes in der neuen Csv-Datei (in B).
Weil viele User gerne mit dBase-Dateien arbeiten, wurde diese Funktion implementiert. A ist die Größe der Datei in B. S muß eine Variable sein oder ein vier Byte großer Speicher, in die nachher die Anzahl Spalten eingetragen ist. steht hier Null, dann wird der Parameter S ignoriert. Z ist ebenfalls eine Variable oder ein vier Byte großer Speicher, nur steht hier nachher die Anzahl Zeilen. F ist ein Flag. Ist Bit Null gelöscht, dann werden auch die Felder (Headerinformationen) der Dbf-Datei mit ausgelesen. Die erste Zeile in der Csv-Datei beinhaltet dann die Feldnamen. Ist Bit Null in F gesetzt, dann werden die Felder ignoriert und nicht mit in die Csv-Datei übernommen. Feldnamen sind vergleichbar mit den Texten der Spaltenbuttons. Ist Bit Eins in F gesetzt, dann werden Datumsfelder vom Type 20020726 automatisch eingesetzt als 2002.07.26 (=26.07.2002). Hier nochmal die Liste aller möglichen Flags ( kombinierbar durch OR Verknüpfung oder Addition).
0 = Felder nicht mit in die Csv-Datei auslesen / keine Datumsfelder-Konvertierung 1 = Felder mit in die Csv-Datei auslesen 2 = Datumsfelder konvertieren, z.B. 20020726 wird zu 2002.07.26
Die neu erstellte Csv-Datei steht nachher in B, die alten Daten in B werden überschrieben. Weil eine Dbf-Datei quasi immer größer ist, als eine Csv-Datei, muß bei der Speicherbereichs-Größe normalerweise nichts beachtet werden.
text$=Datei.dbf bytes&=@FileSize(text$) Größe der Datei ermitteln (bytes&) If bytes&>0 Dim bereich#,bytes& ReadFileQuick(addr(text$),bereich#,0,bytes&) Dbf-Datei laden bytes&=DbfToCsv(bereich#,bytes&,addr(spalten&),0,0) Dbf konvertieren nach Csv / bytes& neu ermitteln CsvToListview(listview&,bereich#,bytes&,spalten&) Csv Datei als Items in Listview einlesen Dispose bereich# EndIf
Gruß, Frank |
|
|
| |
|
|