doppelten Eintrag verhindern

zloyduh

Level-1
Beiträge
226
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

1. Habe ein UDT- erstellt welcher meine Daten-Struktur enthält.
2. Diesen UDT in einem DB ‚Auftrag’ als Array aufgerufen.

Die Daten werden von dem Bediener eingegeben und im dem DB ‚Auftrag’ gespeichert.
Anschließend kann der Bediener die Reihenfolge festlegen nach welcher die Sätze abgearbeitet werden. Die Reihenfolge wird in einem Ringspeicher abgelegt.
Habe alles in SCL programmiert.

Jetzt ist möchte ich verhindern das der Bediener den gleichen Datensatz 2x in den Ringspeicher einträgt. Dies soll durch eine Meldung signalisiert werden.
Wie kann ich das am elegantesten lösen??
 
Hi,

vom Prinzip her so:

Code:
FOR i := 1 TO Ende DO
  FOR j := i TO Ende DO
    IF EQAny(IN1:= Datensatz[i], IN2:= Datensatz[j]) THEN
      Error := TRUE;
      RETURN;
    ELSE
      Error := FALSE;
    END_IF;
  END_FOR;
END_FOR;

Gruss Daniel
 
Hallo, danke für die Antworten.
Wie müsste ich das in meinem Fall Programmieren?

Max_Speicher:= INT
AUFTRAGS_NR:= INT
AUFTRÄGE_PROZESS".AKT_AUFTRAG[]:= ARRAY [1..10] of UDT_DATENSATZ
"AUFTRÄGE_SPEICHER".AUFTRAG[]:= ARRAY [1..99] of UDT_DATENSATZ


Code:
IF #HINZUFÜGEN AND NOT #FL_HINZUFÜGEN AND (#Max_Speicher < #ANZ_MAX) THEN
#Max_Speicher:= #Max_Speicher+1;
// neuen Inhalt an letzte Stelle schreiben
"AUFTRÄGE_PROZESS".AKT_AUFTRAG[#Max_Speicher] := "AUFTRÄGE_SPEICHER".AUFTRAG[#AUFTRAGS_NR];
#Speicher_Nr[#Max_Speicher]:= #AUFTRAGS_NR; // Auftrags Nr. speichern
// Anzahl der Einträge erfassen
#ANZAHL_AUFTRÄGE:=#ANZAHL_AUFTRÄGE+1;
END_IF;
#FL_HINZUFÜGEN:= #HINZUFÜGEN;

Die Daten werden nach der Eingabe im DB AUFTRÄGE_SPEICHER gespeichert.
Der Bediener kann bei Durchblättern der Datensätze entscheiden welcher Datensatz abgearbeitet werden soll. Max 10 Datensätze je Auftrag möglich. Diese werden im DB AUFTRÄGE_PROZESS abgelegt und der Reihe nach abgearbeitet.
Ich möchte verhindern dass der Bediener den gleichen Datensatz mehrmals im DB AUFTRÄGE_PROZESS ablegen kann. Dies soll durch eine Meldung auf dem Bildschirm signalisiert werden.
 
Zurück
Oben