Suche in Artikel Feldern!

24. November 2017 10:39

Hallo Zusammen,

wenn ein Artikel gelöscht wird, muss noch geprüft werden, ob der Artikel in einem anderen Datensatz im Qualität Feld eingetragen ist, wenn ja, darf der Artikel nicht gelöscht werden, aber wenn nur diese Artikel mit seinem Qualität Feld eingetragen ist, darf es.
Kann jemand mir helfen, wie kann ich damit umgehen. Ist mein Code richtig oder?

Mein Code:

OnDeleteRecord() : Boolean
Item.SETFILTER(Quality,Rec."No.");
IF Item.FINDSET THEN BEGIN
IF Item.COUNT > 1 THEN BEGIN
ERROR(Text1);
EXIT;
END;
END;

Re: Suche in Artikel Feldern!

24. November 2017 13:50

Dieser Code funktioniert schon 8-)
Zuletzt geändert von McClane am 24. November 2017 14:49, insgesamt 1-mal geändert.
Grund: Knigge beachten: keine Vollzitate!

Re: Suche in Artikel Feldern!

24. November 2017 14:44

Mahlzeit,

der Code ist nicht ganz optimal.

0. Die Feldbezeichnung "Quality" ist nicht optimal gewählt.
Hat "Quality" eine Referenz auf die Artikeltabelle?
Falls Ja, wäre eine Feldbezeichnung "Item Quality No." besser.
Falls Nein, ist die Filterung nicht in Ordnung.

1. SETFILTER, ist nicht notwendig (SETRANGE)
2. FINDSET, ist nicht notwendig (Performance)
3. COUNT, ist nicht notwendig (Performance)
4. Die Benennung der Textkonstanten sollte sprechend sein (Styleguide)
5. Das EXIT kannst du dir sparen. (Nicht erreichbarer Code)

Besser wäre....
Code:
OnDeleteRecord() : Boolean

Item.SETRANGE(Quality,"No.");
IF NOT Item.ISEMPTY THEN
 ERROR(txtCanNotDelete);

Re: Suche in Artikel Feldern!

24. November 2017 16:24

Ich habe es geändert:

Code:
Item.SETRANGE(Quality,Rec."No.");
IF NOT Item.ISEMPTY THEN BEGIN
  IF Item.COUNT > 1 THEN BEGIN
    ERROR(C_DeleteErr);
  END ELSE IF ItemLoc.COUNT = 1 THEN BEGIN
    IF Rec."No." <> Rec.Quality THEN BEGIN
      ERROR(Text1);
    END;
  END;
END;


Wenn nur einer gefunden wird, kann er gelöscht werden, aber wenn es nicht unser aktueller Artikel ist.

Re: Suche in Artikel Feldern!

24. November 2017 16:59

Hallo,

schau dir das mal an:
Code:
Item.SETRANGE(Quality,"No.");
Item.setFILTER("No.",'<>'%1',"No."); // den aktuellen willst du nicht
if not Item.isempty then // da ist ein anderer als der aktuelle
  ERROR('Artikel wird benutzt');


Gruß Fiddi

Re: Suche in Artikel Feldern!

24. November 2017 21:01

fiddi hat geschrieben:Hallo,

schau dir das mal an:
Code:
Item.SETRANGE(Quality,"No.");
Item.setFILTER("No.",'<>'%1',"No."); // den aktuellen willst du nicht
if not Item.isempty then // da ist ein anderer als der aktuelle
  ERROR('Artikel wird benutzt');


Gruß Fiddi


Ich danke dir. Es zieht sehr besser aus.

Re: Suche in Artikel Feldern!

24. November 2017 21:12

Hallo iSam,

es wäre nett, wenn du den ersten Beitrag deines Posts mit der Information "[Gelöst]" im Betreff versehen könntest, dann weiß jeder, dass der Beitrag abgeschlossen ist.

Außerdem mögen wir es nicht so gerne, wenn in den Beiträgen Vollzitate verwendet werden.

Besser du benutzt den "Antwort"- statt des Zitiern- Buttons, und kopierst dir nur die wichtigen Teile auf die du dich beziehen möchtest in deinen neuen Beitrag und versiehst Sie mit einem Quote-Tag.

Gruß Fiddi