| |
Anzeigen |
|
|
Social Bookmark Script |
|
|
|
 |
Datensatz zwieschen 2 WS kopieren |
Natalia

Jungspund

Dabei seit: 24.09.2008
Beiträge: 20
Einsatzart von VDF: gewerblich Anwenderstatus: Newbie Herkunft: Villingen-Schwenning
en Betriebssystem: Windows XP
 |
|
| Datensatz zwieschen 2 WS kopieren |
 |
Hallo zusammen,
ich habe folgende Problem: In zwei Worspace(WS1 und WS2) habe ich Tabellen mit gleichen Namen und gleichen Filenumber, weil ich für die gleiche view benutze.
Datensätze möchte ich aber von WS1 in WS2 kopieren, nach bestimte Parameter, z.B. Status = "B". View für Kopieren habe ich nur in WS2.
Wie kann ich jetzt die Tabellen gleichzeitig in WS2 öffnen, so dass Relationen auch funktionieren um DatenSätze von WS1 in WS2 zu kopieren?
Was passiert, wenn ich WS1 Tabelle in Filelist WS2 mit anderen Namen eintrage, aber Relation nicht ändere? Wird dann die Relation mit Tabelle in WS1 oder in WS2 verknüpft?
z.B.: WS1: Kopf <-Position
WS2: Kopf<-Position, Kopf1(File aber aus WS1), Position1 (File aber aus WS1).
Wenn ich ein Datensatz in POSITION1 finde, welche Kopf bekomme ich dann?
Aus Kopf(WS2) oder aus Kopf1(also WS1).
Kann ich in WS2 Kopf1 und Position1 ohne verknüpfung mit WS1 anlegen und dann mit "Open as" aus WS1 Tabellen aufmachen? Wie funktioniert es richtig?
Hat jemand vielleicht erfarungen oder anderen Ideen wie es funktioniert?
Danke
Natalia
|
|
27.04.2010 13:01 |
|
|
abraxas
Doppel-As
Dabei seit: 23.07.2007
Beiträge: 107
Einsatzart von VDF: gewerblich Anwenderstatus: VDF-Entwickler Herkunft: Frauenfeld (CH)
 |
|
| RE: Datensatz zwieschen 2 WS kopieren |
 |
Hallo Natalia
| Zitat: |
Wie kann ich jetzt die Tabellen gleichzeitig in WS2 öffnen, so dass Relationen auch funktionieren um DatenSätze von WS1 in WS2 zu kopieren?
|
Öffnen kann man mit "Open AS" jede beliebige Tabelle, sogar ohne Namen "Open c:\temp\customer.dat AS 42". Man muss dann aber mit File und Fieldnumbers arbeiten.
Das mit den Relationen geht nicht. In z.B. OrderDTL Tabelle (im Physischen DAT) steht drin, dass eine Relation zur OrderHea Tabelle besteht, und zwar zum File X, Feld Y. Somit wird ein Relate immer auf File X, Feld Y zugreifen wollen - und nicht auf das mit "Open AS" definiert handle.
| Zitat: |
Was passiert, wenn ich WS1 Tabelle in Filelist WS2 mit anderen Namen eintrage, aber Relation nicht ändere? Wird dann die Relation mit Tabelle in WS1 oder in WS2 verknüpft?
|
Beim finden der Relation greift das System auf das aktive Filelist.cfg zu. Wie schon gesagt: Die Relation ist Fix im DAT drin und zeigt auf eine bestimmte Filen- und Fieldnumber.
| Zitat: |
z.B.: WS1: Kopf <-Position
WS2: Kopf<-Position, Kopf1(File aber aus WS1), Position1 (File aber aus WS1).
Wenn ich ein Datensatz in POSITION1 finde, welche Kopf bekomme ich dann?
Aus Kopf(WS2) oder aus Kopf1(also WS1).
Kann ich in WS2 Kopf1 und Position1 ohne verknüpfung mit WS1 anlegen und dann mit "Open as" aus WS1 Tabellen aufmachen? Wie funktioniert es richtig?
|
Das einfachsten ist es, Du arbeitest mit open as, vergisst die bestehenden Relationen (also die die DD-Builder definiert wurde) und programmierst die Relationen aus (clear/move/find eq). Wenn die Daten ziemlich statisch sind und auch mengenmässig nicht übertrieben, könntest Du Dir auch überlegen die Daten periodisch in den gewünschten Workspace zu kopieren (Tabellen und sogar nur ins memory/array) und eventuell zu denormalisieren.
HTH, Paolo
__________________ =================
Abraxas Informatik AG
Schweiz
=================
|
|
28.04.2010 10:50 |
|
|
Natalia

Jungspund

Dabei seit: 24.09.2008
Beiträge: 20
Einsatzart von VDF: gewerblich Anwenderstatus: Newbie Herkunft: Villingen-Schwenning
en Betriebssystem: Windows XP
Themenstarter
 |
|
Danke,
ist es dann so:
ich soll die Tabellen Kopf1 und Position1 in WS2 anlegen ohne Relation,
dann open WS1\Kopf as Kopf1 und open WS1\Position as Position1 ausführen
und danach haben Kopf1 und Position1 Daten aus WS1?
Und warum wenn ich in WS2 Relation habe tut er nicht Position1(mit Daten aus WS1) mit Kopf1(Daten auch aus WS1) verknüpfen.
Nach File-/Field - Nummer soll eigentlich stimmen oder? Die Tabellen aus WS1 bekommen dann einfach Nummern von Tabellen in WS2 oder?
Und ich habe Tabellen jetzt doch mit Relation drin und sehe keine Daten nach dem Open as. Liegt es daran?
Gruß
Natalia
|
|
28.04.2010 11:09 |
|
|
Roman Köhler
Administrator
    

Dabei seit: 29.08.2007
Beiträge: 202
Einsatzart von VDF: gewerblich Anwenderstatus: VDF-Entwickler Herkunft: Mannheim Betriebssystem: Windows XP
 |
|
Hi Natalia,
ich bin ja immer ein Freund von unkomplizierten Lösungen. Daher meine Frage: Müssen die beiden Workspaces unbedingt auf einen unterschiedlichen Datenbestand zugreifen? Wenn Du sagst, dass WS 2 einen Teil der Daten von WS 1 braucht, wäre ein (teilweise) gemeinsamer Datenbestand mit geschickt gesetzten constraints in WS 2 nicht vielleicht auch möglich?
Nur mal so als Denkansatz.
LG
Roman
|
|
28.04.2010 12:05 |
|
|
Natalia

Jungspund

Dabei seit: 24.09.2008
Beiträge: 20
Einsatzart von VDF: gewerblich Anwenderstatus: Newbie Herkunft: Villingen-Schwenning
en Betriebssystem: Windows XP
Themenstarter
 |
|
Leider nicht,
beim koperen machen wir Umrechnung in andere Währung, und anderen Felder können dann in WS2 geändert werden.
und wenn ich die Tabellen in WS1 hinzufüge, dann brauche ich alle Masken doppelt.
|
|
28.04.2010 12:09 |
|
|
abraxas
Doppel-As
Dabei seit: 23.07.2007
Beiträge: 107
Einsatzart von VDF: gewerblich Anwenderstatus: VDF-Entwickler Herkunft: Frauenfeld (CH)
 |
|
Natalia
| Zitat: |
ich soll die Tabellen Kopf1 und Position1 in WS2 anlegen ohne Relation,
dann open WS1\Kopf as Kopf1 und open WS1\Position as Position1 ausführen
und danach haben Kopf1 und Position1 Daten aus WS1?
|
Ja. Du musst aber nicht Tabellen anlegen ohne Relation. Du hast ja im WS2 wie auch im WS1 dieselbe Tabellen(Struktur). Du willst eigentlich eine Datei aus WS1 in WS2 unter 'anderem' Namen öffnen.
Wir sind jetzt im WS2 und wollen KOPF aus WS1 aufmachen:
| code: |
1:
2:
|
open KOPF
open "C:\WS1\DATEN\KOPF.DAT" as KOPF |
|
Jetzt hast Du aber ein Problem: Du willst ja KOPF vom WS2 auch aufmachen. Mit diesem Befehl oben ist aber KOPF als Tabelle des WS1 geöffnet. Ein vorheriger "open KOPF" würde somit überschrieben.
Also: Du kannst eine Tabelle namens KOPF nur einmal öffnen und somit brauchst Du einen weiteren symbolischen Namen für die Datei aus WS1: KOPF1.
Um das zu erreichen brauchst Du einen weiteren Eintrag im Filelist.cfg: KOPF1. Dann sieht der Open so aus:
| code: |
1:
2:
|
open KOPF
open "C:\WS1\DATEN\KOPF.DAT" as KOPF1 |
|
Neues Problem: Es kompiliert nicht, weil er kein KOPF1.FD findet! Also das .FD für KOPF1 erstellen (nur das FD und KEINE Tabellen/DAT).
Solange Du die Relationen nicht gebrauchst (mit relate KOPF1 oder auch mit eine KOPF1.DD), kannst Du damit eigentlich alles machen.
Die obige Lösung hat eben den Nachteil, dass Du einen Filelist Eintrag machen musst, mit Definition von .FD und allenfalls .TAG für KOPF1. Der Vorteil ist, dass Du dann Daten wie gewohnt suchen/bearbeiten kannst (find eq KOPF1 by index.1, move KOPF1.NAME to KOPF.NAME).
Als Alternative kann man auch so vorgehen:
| code: |
1:
2:
3:
|
open KOPF
open "C:\WS1\DATEN\KOPF.DAT" as 400
|
|
Der Nachteil ist, dass KOPF1 nicht existiert und man mit File und Feldnummern arbeiten muss. Vorteil: Kein filelist Eintrag, kein KOPF1.FD etc.
| code: |
1:
2:
3:
|
Clear 400 // Clear KOPF1
set_field_value 400 3 to KOPF.NAME // move KOPF.NAME to KOPF1.NAME (Feld 3)
vfind 400 index.1 EQ // Find eq KOPF1 by index.1 |
|
paolo
PS: Es gäbe da noch die Möglichkeit mit Set_Relate die Relationen umzubiegen, "set_relate position1.kopf_id to kopf1.kopf_id". Dann würde das mit den relationen auch klappen..
__________________ =================
Abraxas Informatik AG
Schweiz
=================
|
|
28.04.2010 14:33 |
|
|
Natalia

Jungspund

Dabei seit: 24.09.2008
Beiträge: 20
Einsatzart von VDF: gewerblich Anwenderstatus: Newbie Herkunft: Villingen-Schwenning
en Betriebssystem: Windows XP
Themenstarter
 |
|
|
29.04.2010 08:55 |
|
|
Natalia

Jungspund

Dabei seit: 24.09.2008
Beiträge: 20
Einsatzart von VDF: gewerblich Anwenderstatus: Newbie Herkunft: Villingen-Schwenning
en Betriebssystem: Windows XP
Themenstarter
 |
|
Vielen Dank,
es funktioniert, man muss nur in WS2 zuerst
close Kopf1
und nur dann
open "WS1\data\kopf.dat" as Kopf1
ausführen, sonst hatte ich immer Daten aus WS2.
|
|
29.04.2010 12:40 |
|
|
|
|
|
 |
|