PDA

View Full Version : SQL - Problem



Tommy
16-12-02, 10:44
Hi Leute!

Habe ein kleines Problem: Will Daten aus einer anderen Datei in eine in Benutzung stehende Datei per cpyf kopieren. Das Sys bringt mir folgendes:

Weitere Nachrichteninformationen

Nachrichten-ID . . . . : CPF5009 Bewertung . . . . . . : 10
Nachrichtenart . . . . : Diagnose
Sendedatum . . . . . . : 16.12.02 Sendezeit . . . . . . : 11:37:58

Nachricht . . . : Doppelter Satzschlüssel in Teildatei MBEFUE.
Ursache . . . . : Die Ausgabe- oder Fortschreibungsoperation bei
Teildateinummer 1, Satznummer 0, Format RBEFUE für Teildatei MBEFUE in Datei
MBEFUE in Bibliothek UDVM400DAT ist fehlgeschlagen. Teildateinummer 1,
Satznummer 44, Format RBEFUE, hat den gleichen Schlüssel wie Teildateinummer
1, Satznummer 0, Format RBEFUE. Ist die Satznummer null, ist der doppelte
Satzschlüssel bei einer Ausgabeoperation entstanden.
Fehlerbeseitigung: Einen der beiden Schlüssel ändern, damit die Schlüssel
eindeutig sind; Anforderung wiederholen.


----------------------------------------------

Was ist hier los ? Was ist der doppelte Schlüssel ?

Danke euch im voraus.

Grüße


Tommy

schreibr
16-12-02, 10:50
Hallo Tommy,
die bestehende Datei hat einen eindeutigen (unique) Index. Zu sehen mit DSPFD - Die Datei, die Du mit CPYF dazukopieren möchtest hat natürlich ebenfalls die Indexfelder der Bestehenden. Und durch den Unique-Index wird dies beim CPYF bemerkt und dann erhältst Du diesen Fehler.
Gruss Reinhold

Tommy
16-12-02, 10:54
hi Reinhold!

Danke dir!

Wie kann ich das nun umgehen ??

ich muss irgendwie die Daten in diese DB reinbekommen...

Grüße

Tommy

malzusrex
16-12-02, 11:11
einen der doppelten sätze löschen

Tommy
16-12-02, 11:21
Kann ich nicht den Index oder so neu aufbauen ??

Gerlitz
16-12-02, 11:36
Erstnochmal zur Erklärung des Problems.

Wenn Du z.B. Kundendateien hättest und in Datei A einen Kunden 4711 hast und Datei A nach Datei B kopieren willst und in Datei B der Kunde 4711 schon drinne ist und die Datei nur einen eindeutigen Index zulässt, dann bekommst Du beim kopieren das Problem.

Was kannst Du machen?

Z.B. kannst Du beim kopieren beim Parameter "Maximale Fehler" (so ziemlich der letzte Parameter im cpyf-Befehl) *nomax angeben, dann werden alle Sätze kopiert außer den doppelten.

Oder Du erstellst eine Datei C in der doppelte Sätze in den Schlüsselfeldern erlaubt sind. Nur ist es die Frage, ob es sinnvoll ist z.B. bei Kundendateien die Kundennummer 4711 zweimal in der Datei zu haben.

Gruß

Matthias

Joe
16-12-02, 11:54
Hallo.

Wie wär's mit Cpyf und MBROPT(*UPDADD)

Gruss
Joe

Fuerchau
16-12-02, 16:43
UPDADD funktioniert nur, wenn auf der PF-Datei ein Schlüssel vorhanden ist.
Wenn aber der eindeutige Schlüssel in einer LF definiert ist (weil z.B. die PF keinen Schlüssel hat) funktioniert UPDADD leider nicht !

Ein eindeutiger Schlüssel macht natürlich Sinn (siehe Vorredner), wenn der Satz aber geändert werden muss (was hier die Frage ist) kann man nur per Programm den Copy vornehmen.
Alternativ kann ich noch mein Tool SQLCPY vorschlagen, dass UPDADD unterstützt, da per SQL kopiert wird und der Schlüssel beliebig definiert werden kann (näheres siehe unter www.fuerchau.de). (http://www.fuerchau.de).)

Achtung: Schlüsseländerungen sollten mit Vorsicht durchgeführt werden, insbesonders wenn bestehende Anwendungen sich darauf verlassen !