(Gelöst) Feld als eindeutig konfigurieren

12. Dezember 2011 18:30

Hallo zusammen!

Ich habe in der Artikeltabelle ein neues Feld eingerichtet. Dieses würde ich nun gerne so konfigurieren, das es eindeutig sein muss.
Ich habe das Feld in die Keys der Tabelle aufgenommen, dennoch kann ich bei zwei unterschiedlichen Artikeln die selbe Nummer in das Feld eintragen.
Wie kann ich hier die Prüfung auf Eindeutigkeit hinterlegen?

Gruß
Fuige
Zuletzt geändert von fuige am 13. Dezember 2011 10:01, insgesamt 1-mal geändert.

Re: Feld als eindeutig konfigurieren

12. Dezember 2011 18:52

Hi,

du müsstest es schon im PrimaryKey aufgenommen, ABER dann würdest du die ganzen Standard Implementierung auf diese Tabelle verändern. Bloß nicht!

Am besten du Prüfst das im OnValidate Trigger des Feldes, ob der Wert bereits verwendet wird.

Code:
item.setrange(Feld,Feldwert);
if Not item.isempty then
 Error('Wert wird verwendet');



Gruß
Aydin

Re: Feld als eindeutig konfigurieren

12. Dezember 2011 19:07

Hi!

Ich werd's morgen Früh sofort ausprobieren.

Re: Feld als eindeutig konfigurieren

12. Dezember 2011 20:38

Dann denk noch an eine Prüfung auf <>''.

Re: Feld als eindeutig konfigurieren

13. Dezember 2011 09:24

Hallo Ihr zwei!

Ich habe jetzt folgenden Code hinterlegt

Code:
REC.setrange("US item no",Feldwert);
if Not item.isempty then
 Error(Text50000);


Nur ist mir nicht klar, wie ich bei "Feldwert" den aktuell eingegebenen Wert abprüfe.

Könntet Ihr einem C/Side Neuling wie mir noch etwas weiter helfen?

Danke!

Re: Feld als eindeutig konfigurieren

13. Dezember 2011 09:47

Hallo Michael!

fuige hat geschrieben:
Code:
REC.setrange("US item no",Feldwert);
if Not item.isempty then
 Error(Text50000);


Nur ist mir nicht klar, wie ich bei "Feldwert" den aktuell eingegebenen Wert abprüfe.

Dein "Feldwert" repräsentiert dein zu prüfendes Feld. Ich vermute mal, dass es sich um das Individualfeld "US Item No." handelt.
Du verwendest in deinem Code zwei verschiedene Variablen:
Den Filter wendest du auf Rec an, prüfst jedoch die Variable Item auf ISEMPTY.
Das kann nicht wirklich funktionieren.

Richtig wäre:
Code:
Item.SETRANGE("US Item No.",Rec."US Item No.");
IF NOT Item.ISEMPTY THEN
  ERROR(Text50000);

Ich habe in dem Code explizit Rec."US Item No." geschrieben, um zu verdeutlichen, woher der Wert stammt.
Tatsächlich kann man auf Tabellen- und Formebene auf die Angabe von Rec. verzichten, da NAV dies implizit annimmt.

Re: Feld als eindeutig konfigurieren

13. Dezember 2011 09:52

Ich würde trotzdem mit
Code:
IF "US Item No."<>'' ...

beginnen, da man den Feldwert sonst nicht mehr leeren kann.

Re: Feld als eindeutig konfigurieren

13. Dezember 2011 09:57

Zusammen mit McClane's Info würde der Code dann wie folgt aussehen:
Code:
IF "US Item No." <> '' THEN BEGIN
  Item.SETRANGE("US Item No.","US Item No.");
  IF NOT Item.ISEMPTY THEN
    ERROR(Text50000);
END;

Hier habe ich auf die überflüssige Verwendung von Rec. verzichtet.
Mit Verwendung von Rec. würde der Programmcode wie folgt aussehen:
Code:
IF Rec."US Item No." <> '' THEN BEGIN
  Item.SETRANGE("US Item No.",Rec."US Item No.");
  IF NOT Item.ISEMPTY THEN
    ERROR(Text50000);
END;

Beide Varianten sind zu 100% identisch.

Re: Feld als eindeutig konfigurieren

13. Dezember 2011 10:01

Ja!
Es funktioniert.

Vielen Dank euch 3 für die wieder einmal super Hilfe hier im Forum!!!