[CC] Prüfen ob Wert in Tabelle vorhanden ist

20. Februar 2018 17:55

Moin,

Kurze Erklärung:

(Meine Tabelle:) TabelleY. = Tabelle soll spätere Werte speichern "Entry" (momentan leer) (Felder: ID(Eindeutiger Schlüssel)BelegNr.,ZeilenNr.(Secoundary Key))

Ich gehe mit der Tabelle "Sales Line" und dessen Filter in die Form + Subform mit TabelleY (Tablebox). Daher habe ich im Rec. die Felder "Document No." "und Line.No". diese beiden Felder würde ich gerne als Filter gegen meine Felder (BelegNr. u. ZeilenNr.) in TabelleY stellen. Wenn Werte in TabelleY vorhanden sind soll ein Filter auf TabelleY gemacht werden damit in der Subform nur Auftrag relevante Daten stehen. Wenn er keine Werte findet dann soll er von mir festgelegte Werte in die TabelleY schreiben. Mein Problem ist nun das ich nicht einfach ein SETFILTER oder ein SETRANGE benutzen kann da dieser Wert beim ersten Aufruf noch nicht in der TabelleY vorhanden ist.

Wie muss dieser Filter aussehen?

Quellcode:

Code:
carchecks.SETCURRENTKEY(carchecks."Belegnr.",carchecks."Zeilennr.");

// Hier sollte eigentlich ein SETFILTER/SETRANGE stehen.

IF NOT ((carchecks."Belegnr." = Rec."Document No.") AND (carchecks."Zeilennr." = Rec."Line No.")) THEN BEGIN
   Carcheck.SETRANGE(Carcheck.Kategorie,Carcheck.Kategorie::UVV);
   IF Carcheck.FIND('-') THEN
      REPEAT
         carchecks.FINDLAST;
         carchecks.ID := carchecks.ID +1;
         carchecks."Belegnr." := "Document No.";
         carchecks."Kd-Nr." := "Sell-to Customer No.";
         carchecks."Zeilennr." := "Line No.";
         carchecks."Zeilennr." := "Line No.";
         carchecks.Bezeichnug := Carcheck.Bezeichnung;
         carchecks."KFZ-Kennzeichen" := "Customer Car No.";
         carchecks."Erstell Datum" := TODAY;
         carchecks.Kategorie := carchecks.Kategorie::UVV;
         carchecks."Mängel?" := FALSE;                           
         carchecks."Nicht prüfbar" := FALSE;
         carchecks.Bemerkung := '';
         carchecks.INSERT;
      UNTIL Carcheck.NEXT = 0;

END ELSE
carchecks.SETRANGE(carchecks."Belegnr.","Document No.");
Zuletzt geändert von Guenther am 23. Februar 2018 11:38, insgesamt 1-mal geändert.

Re: [CC] Prüfen ob Wert in Tabelle vorhanden ist

21. Februar 2018 02:25

Ich versteh's ehrlich gesagt noch nicht so ganz, aber warum nicht so:

carchecks.SETCURRENTKEY(carchecks."Belegnr.",carchecks."Zeilennr.");
carchecks.setrange("Belegnr.",Rec."Document No.");
carchecks.setrange("Zeilennr.",Rec."Line No."));
if not carchecks.findfirst THEN BEGIN
...Insert Logik...

Re: [CC] Prüfen ob Wert in Tabelle vorhanden ist

21. Februar 2018 08:59

Vorab danke für deinen Lösungsvorschlag. Stell sonst gerne Fragen was dir unklar ist damit ich Sie versuchen kann genauer zu beschreiben.

Das Problem ist wenn ich das so probiere wie beschrieben, dann habe ich beim ersten Durchlauf ja noch keine Werte in meiner Tabelle.
Daher meckert das System dann das ich kein Filter auf etwas setzen kann was noch nicht in der Tabelle vorhanden ist. Wenn ich den/die
Datensätze manuell anlege und dann den gleichen Code versuche funkioniert es einwandfrei. Aber ich kann nicht einfach willkürlich vorab
Datensätze anlegen.

Das ist die Meldung die generiert wird, wenn ich versuche ein SETFILTER/SETRANGE an dieser Stelle im Code zu verwenden.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.