[Gelöst: Workaround] MARKEDONLY verkehrt herum verwenden

10. August 2007 09:27

Hallo!

Ich habe für unsere Produktion ein Form gebastelt, in dem die Sales Line angezeigt werden. Sprich eine kleine Auftragsübersicht für eine Abteilung in der Produktion.

Um die Möglichkeit zu schaffen, erledigt Aufträge auszublenden, habe ich mich der Satzmarkierung bedient. (MARK). Wenn das Form startet, markiere ich alle gefunden Einträge.

Form - OnAfterGetRecord()
Rec.MARK(TRUE);

Erledigte Aufträge können dann über entfernen der Satzmarkierung ausgeblendet werden.

Nun habe ich folgendes Problem. Wenn in der Zwischenzeit ein neuer Auftrag erstellt wird, wird dieser natürlich nicht im Form automatisch angezeigt, weil ja auch die Satzmarkierung fehlt.

Bevor ist nun lange mit FIND und OnUpdate herumspiele, wollte ich mal fragen ob ich die Satzmarkierung auch umgekehrt verwenden kann. Sprich die Zeilen ausblenden, die eine Satzmarkierung haben. Bis jetzt bin ich leider nicht wirklich weit gekommen.

Von der Möglichkeit ein neues Feld in die Sales Line einzubauen möchte ich abstand nehmen, weil das Form nur eine Zwischenlösung ist. Und für diese Abteilung demnächst eigene Tables und Forms erstellt werden.

Vielleicht kennt jemand einen Trick.

Danke vielmals.
Zuletzt geändert von martinhaindl am 11. August 2007 12:30, insgesamt 1-mal geändert.

10. August 2007 09:54

Kehre doch alle Satzmarken in das Gegenteil um:

Code:
IF Datensatz.MARK(TRUE) THEN
  Datensatz.MARK(FALSE)
ELSE
  Datensatz.MARK(TRUE);

10. August 2007 10:27

Hi Natalie,

dein Code ist nicht ganz korrent. In der IF-Zeile ist das (TRUE) zu viel. So müsste es aussehen:

Code:
IF Datensatz.MARK THEN
  Datensatz.MARK(FALSE)
ELSE
  Datensatz.MARK(TRUE);

Oder etwas kürzer:

Code:
Datensatz.MARK(NOT Datensatz.MARK);

Gruß, Marc

10. August 2007 10:51

Meinte ich ja auch *grummel*

MARKEDONLY verkehrt herum verwenden

10. August 2007 13:58

Danke vielmals für eure schnellen Antworten.

Ich glaube ich komme mit euren Codebeispielen nicht klar, bzw. mein Post wurde falsch interpretiert.

Wenn ich das Table Form starte, dann werden alle gefundenen Einträge über MARK(TRUE); Satzmarkiert. Über ein Menuitem (Buttom) kann man dann die aktuelle Zeile über den Code

Rec.MARK(FALSE);
Rec.MARKEDONLY(TRUE);

verstecken. Sprich es werden nur mehr die Satzmarkierten Einträge angezeigt.

Wenn nun ein neuer Eintrag (ein Auftrag wird erfasst) hinzukommt, ist dieser ja nicht Satzmarkiert und wird natürlich nicht angezeigt.

Am einfachsten wäre es, erledigt Aufträge mit Satzmarkierung zu markieren und dadurch zu verstecken. Aber dies habe ich nicht zusammengebracht, weil MARKEDONLY(FALSE) immer alle Einträge anzeigt, inkl. Satzmarkierten.


Vielleicht hat jemand noch einen Tip, bevor ich mit an FIND ranmache.

Danke.

10. August 2007 14:46

Okay, jetzt hab ich es verstanden. :-)

Muss aber passen! Außer über OnTimer und einer erneuten Prüfung der neuen Aufträge, fällt mir nichts mehr ein.

10. August 2007 21:52

Du kannst höchstens im OnInsertTrigger der Auftragstabelle ein Mark(true) einbauen, dass die Markierung setzt, sobald ein Datensatz angelegt wird, aber ich befürchte, dass die Markierung möglicherweise dann bei Dir trotzdem nicht ankommt. Besser ist es da ein Boolean-Feld "noch nicht erledigt" in den Datensatz einzubauen, und dieses bei Neuanlage automatisch zu setzen. Erledigte bekommen das Häkchen dann entfernt. Um nur die unerledigten zu sehen, filter einfach auf das Feld=true.

11. August 2007 12:28

Danke an alle!

Da ich die Satzmarkierung leider nicht umkehren konnte, habe ich nun doch ein neues Feld in den Sales Lines hinzugefügt, um einen erledigten Auftrag zu markieren. Das mit den Satzmarkierungen ist zwar nett, aber birgt doch einiges an Fehlerpotenzial. Und bevor Aufträge in der Produktion übersehen werden, gehe ich doch lieber auf Nummer sicher und mach es gleich schön.

Danke nochmals an alle für eure Hilfe.

Schönes verregnetes (zumindest in Österreich) Wochenende.