CSV to dbf [erledigt]

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

CSV to dbf [erledigt]

Beitrag von Wolfgang_B »

Guten Abend,
ich versuche verzweifelt eine CSV-Datei in eiene DBF einzulesen. Irgendwie klappt das nicht.
FUNCTION FIBUCSV_TO_DBF_TEST( datei )

// Import Daten aus einer FIBU-CSV-Datei in eine DBF
aDbf := {}
AADD(aDbf,{"F_KONTO1", "C",6,0 })
AADD(aDbf,{"F_KONTO2", "C",6,0 })
AADD(aDbf,{"F_SH", "C",1,0 })
AADD(aDbf,{"F_BET_NE", "N",8,2 })
AADD(aDbf,{"F_BET_ST", "N",8,0 })
AADD(aDbf,{"F_BET_BR", "N",8,2 })
AADD(aDbf,{"F_NAME", "C",150,0 })
DBCREATE("VWFITEST", aDbf)

MSgBox("Datei: "+datei)

select 1
use VWFITEST
select 2

DbeSetDefault( "DELDBE" )

DbeInfo( COMPONENT_DATA, DELDBE_DELIMITER_TOKEN, chr( 0 ) )
DbeInfo( COMPONENT_DATA, DELDBE_FIELD_TOKEN, ';' )
DbeInfo( COMPONENT_DATA, DELDBE_FIELD_TYPES, "CCCNNNC" )

use ( datei ) via ("DELDBE")
go top
skip // weil in der ersten Zeile die Spaltenbeschriftungen stehen...
do while .not. eof()
select 1
append blank
select 2
replace VWFITEST->F_KONTO1 with field->field7
replace VWFITEST->F_KONTO2 with field->field8
replace VWFITEST->F_SH with field->field16
replace VWFITEST->F_BET_NE with field->field4
replace VWFITEST->F_BET_ST with field->field5
replace VWFITEST->F_BET_BR with field->field4
dbskip()
enddo
DBCLOSEALL()

DbeSetDefault( "DBFNTX" )

RETURN( NIL )
// ENDFUNCTION


Es kommt folgender Fehler:
Bild

Zusatz: Die CSV-Datei hat 160 Felder. Der Fehler kommt bei use(datei) via ("DELDBE")
Dateianhänge
fehler1.jpg
fehler1.jpg (22.44 KiB) 3291 mal betrachtet
Zuletzt geändert von Wolfgang_B am Do, 30. Jan 2020 13:33, insgesamt 1-mal geändert.
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: CSV to dbf

Beitrag von Werner_Bayern »

Servus Wolfgang,

warum kein

Code: Alles auswählen

#include "sdf.ch"

dbcreate("VWFITEST", {{...}})
use VWFITEST
append from (datei) delimited ...
Wg. Feldnamen in der 1. Zeile kannst ja vorher die eine Zeile aus der CSV entfernen.

Ansonsten liegt Dein Fehler wohl an der DBE, Du musst die "SDFDBE" verwenden.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: CSV to dbf

Beitrag von Wolfgang_B »

Morgen Werner,

Dein Vorschlag scheitert schon mal an einer fehlenden "sdf.ch" :( . Ich habe nochmal rumprobiert und habe ein seltsames Phänomen entdeckt. Mich hats nur gewundert, weil diese Funktion an anderer Stelle funktioniert.

Der Fehler kommt, wenn die Datei keinen Dateizusatz ".CSV" hat. Es nützt auch nichts, wenn man programmtechnisch die Endung hinzufügt. Es geht nur dann, wenn man auf Dateiebene die Datei entsprechend umbennt, wenn diese noch keine Endung ".CSV" hat. Für mich zwar sehr seltsam, aber jederzeit reproduzierbar.

So funktioniert das.

Bei SDF sind doch feste Feldgrößen vorgesehen, oder? Die hätte ich in diesem Fall nicht.
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: CSV to dbf

Beitrag von Werner_Bayern »

Servus Wolfgang,

die sdf-Sachen gibt's bei Alaska, hatten wir erst kürzlich hier. Wenns jetzt läuft, eh gut, ansonsten sag Bescheid oder ruf an, wenn ich noch helfen kann.

Nein, SDF hat doch den DELIMITED-Parameter, da kannst angeben, mit welchem Satzzeichen die einzelnen Felder voneinander getrennt sind.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: CSV to dbf

Beitrag von Wolfgang_B »

SDF -> achso wegen dem DELIMITED-Parameter. ok dann ist's klar.

Danke nochmal!!

Übrigens gibts bei Alaska nicht dergleichen für mich runterzuladen :angry4:
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Antworten