| |
|
|
| Hallo Frank,
ich versuche gerade ein Prg. zu schreiben, mit dem ich DBF-Dateien modifizieren kann: 1. DB einlesen 2. Felder (Spalten) entfernen / hinzufügen 3. Als neue DB abspeichern
1. und 2. klappen gut. Wenn ich die geänderte DB mit ListViewToDBF abspeichere, verliere ich fast alle Feldbeschreibungen: Feldname - ok Feldtyp - C,N usw. ok Feldlänge - rein zufällig ( 1 - 59... bisher) Anz.Dezimalstellen bei N-Feldern ist nicht zu setzen, daher immer 0 - schade, keine Centbeträge mehr Hast Du eine Idee, wie man das setzen kann?
Danke ThomasP |
|
|
| |
|
|
|
| Hi Thomas,
in der Anleitung ist unter ListviewToDbf() ein Beispiel gepostet. Klappt es damit nicht ?
bytes&=GetNeededMemory(listview&,2) Dim bereich#,bytes&
bytes&=ListviewToDbf(listview&,bereich#,bytes&,0) Char bereich#,43=N Char bereich#,(43+32)=C eigentlich unnötig, enthält schon C Char bereich#,(43+64)=C eigentlich unnötig, enthält schon C Char bereich#,(43+96)=N Char bereich#,(43+128)=N
text$=Datei.dbf WriteFileQuick(addr(text$),bereich#,0,bytes&)
Dispose bereich#
Gruß, Frank |
|
|
| |
|
|
|
| Hallo Frank,
das Beispiel klappt einwandfrei: > Feldtyp - C,N usw. ok
Was ich nicht weiss, ist wie man die Feldparameter Feldlänge und Anzahl Dezimalstellen einstellt. Z.B. Feldname: MeinGeld Feldtyp: Numerisch Feldlänge : 11 (man ist Optimist!) Dezimalstellen: 2
ergibt 12345678.90
mfG ThomasP |
|
|
| |
|
|
|
| Hi,
ich seh mir das in den nächsten Tagen an. Heute habe ich leider keine Zeit.
Gruß, Frank |
|
|
| |
|
|
|
| Hi,
der Feldtyp sollte ja klar sein (Offset 43):
Char bereich#,43=N
Und für jede Spalte 32 hinzufügen
Char bereich#,(43+32)=C Char bereich#,(43+64)=C Char bereich#,(43+96)=N
Die Feldlänge (ein Byte !) hat den Offset 48. Die Dezimalstellen (auch ein Byte !) den Offset 49.
z.B.:
Byte bereich#,48=11 Byte bereich#,49=2
Damit kannst du ja mal testen und Bescheid sagen, ob du damit zurecht kommst oder ob ich das in der Dll fest verankern sollte.
Gruß, Frank |
|
|
| |
|
|
|
| Hallo Frank,
hab leider z.Zt. SEHR wenig Zeit.
Werde aber deinen Vorschlag bald ausprobieren und Dir dann Bescheid geben.
Grundsätzlich fände ich es gut, wenn es fest in die DLL eingebaut würde.
Gruß ThomasP |
|
|
| |
|
|