Append from

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

Moderator: Moderatoren

Antworten
medmaster
UDF-Programmierer
UDF-Programmierer
Beiträge: 58
Registriert: Di, 29. Jan 2008 1:43

Append from

Beitrag von medmaster »

Ich verwende den Befehl, um von einer temporären Datei Datensätze an eine andere .dbf anzuhängen.
Beide Dateien haben exakt die gleiche Struktur.
Fehler : es werden nicht alle Feldinhalte übertragen - ich erinner mich an alte Hinweise, dass der Befehl nicht sauber arbeitet.
Stimmt das ? Und was könnte ich als Ersatz nehmen ?
Danke fürs Nachdenken !
Rainer
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Append from

Beitrag von AUGE_OHR »

medmaster hat geschrieben: Di, 03. Jul 2018 23:13 Beide Dateien haben exakt die gleiche Struktur.
dann ist es easy

Code: Alles auswählen

   SELECT 1
   USE DBF_A EXCLUSIV
   aStruct := DbStruct()
   iMax := LEN(aStruct)
   SELECT 2
   USE DBF_B EXCLUSIV

   SELECT 1
   DO WHILE .NOT. DBF_A->( EOF() )
        DBF_B->( DbAppend() )
        i := 0
        FOR i := 1 TO iMax
            DBF_B->( FieldPut( DBF_A->(FieldGet(i) ) ) )
        NEXT
        DBF_A->( DbSKIP() )
   ENDDO
wenn es zwar die selben Feldnamen sind aber nicht die Reihenfolge dann

Code: Alles auswählen

    FieldPos( <cFieldName> ) --> nFieldPosition
medmaster hat geschrieben:Fehler : es werden nicht alle Feldinhalte übertragen
wenn nicht beide DBFNTX sind : verwendest du VIA beim APPEND FROM :?:
medmaster hat geschrieben:ich erinner mich an alte Hinweise, dass der Befehl nicht sauber arbeitet.
Stimmt das ? Und was könnte ich als Ersatz nehmen ?
bei der DBFDBE und FOXDBE wüsste ich von keinen solchen Problemen aber bei DELDBE gibt es einige PDR Einträge.
gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Append from

Beitrag von Jan »

Rainer,

wenn Du mit Xbase++ 2.0 arbeitest, könntest Du das mal mit GATHER und SCATTER versuchen.

Code: Alles auswählen

DO WHILE .NOT. ersteDbf->(EoF())
   DbSelectArea(ersteDbf)
   SCATTER NAME oDatensatz
   DbSelectArea(zweiteDbf)
   zweiteDbf->(DbAppend())
   GATHER NAME oDatensatz
   ersteDbf->(DbSkip())
ENDDO
Etwas aufwändiger als Append From, aber wenn beide dbf deckungsgleich sind, sollte das gut gehen. Es geht auch, wenn die nicht deckungsgleich sind, aber dann wird nur der Inhalt geschrieben, wo die Felder in beiden dbf gleich sind.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: Append from

Beitrag von mini990 »

Hallo,
ich nutze seit zig Jahren folgendes:

Code: Alles auswählen

FUNCTION COPYSATZ2DBF(cDBF)
LOCAL z:=0; inhalt:={}; oldDBF:=select()
for z = 1 to fcount()
	aadd(inhalt,&(fieldname(z)))
next z
select &cDBF
if addrec(1)
	for z = 1 to fcount()
		replace &(fieldname(z)) with inhalt[z]
	next z
	unlock
	select(oldDBF)
	return .t.
endif
select(oldDBF)
return (.f.)
Gruß Stefan
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Append from

Beitrag von Tom »

Ich finde keinen offenen PDR zu "APPEND", der das Verhalten erklären könnte. Wir nutzen derlei zwar selten, aber es sind uns keine aktuellen Fehler (1.9SL1/2.0) von Kunden bekannt.

In der 2.0 kann man auch ein "SELECT * INTO OBJECTS aData" auf der Quelle verwenden - und ein "UPDATE <cTable> FROM aData" auf dem Ziel. Das wird aber auf dasselbe hinauslaufen wie APPEND FROM und die ganzen Workarounds hier.
Herzlich,
Tom
medmaster
UDF-Programmierer
UDF-Programmierer
Beiträge: 58
Registriert: Di, 29. Jan 2008 1:43

Re: Append from

Beitrag von medmaster »

danke allen - ich nehm eins von den Umgehungsprogrammen !
Rainer
Antworten