Append from
Moderator: Moderatoren
Append from
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
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
- AUGE_OHR
- Marvin
- Beiträge: 12910
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Append from
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
Code: Alles auswählen
FieldPos( <cFieldName> ) --> nFieldPosition
wenn nicht beide DBFNTX sind : verwendest du VIA beim APPEND FROMmedmaster hat geschrieben:Fehler : es werden nicht alle Feldinhalte übertragen
bei der DBFDBE und FOXDBE wüsste ich von keinen solchen Problemen aber bei DELDBE gibt es einige PDR Einträge.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 ?
gruss by OHR
Jimmy
Jimmy
- Jan
- Marvin
- Beiträge: 14659
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Append from
Rainer,
wenn Du mit Xbase++ 2.0 arbeitest, könntest Du das mal mit GATHER und SCATTER versuchen.
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
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
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- mini990
- 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
Hallo,
ich nutze seit zig Jahren folgendes:
Gruß Stefan
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.)
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9373
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Append from
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.
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
Tom