Verkäufercode muss gefült werden

28. Januar 2009 13:05

hallo zusammen
ich möchte das die benutzer das feld verkäufercode füllen.
wenn die es nicht tun kommt eine meldung. soweit ok.

aber wenn ich es wie hier unten realisiere. kommt zwar die meldung aber durch ok kann mann trotzdem weiter machen.

wie kann ich es machen so das mann auf keinen anderen feld springen kann wenn es nicht gefült ist.

IF Salesperson = '' THEN
MESSAGE('verkäufercode wurde nicht gefült');

Re: Verkäufercode muss gefült werden

28. Januar 2009 13:14

Versuchs mal so:
Code:
IF Salesperson = '' THEN
  ERROR('verkäufercode wurde nicht gefüllt');


Falls ihr nicht nur mit der deutschen Sprache arbeitet, solltest du deine Meldung übrigens als Textkonstante mit Übersetzung anlegen.
Code:
IF Salesperson = '' THEN
  ERROR(DeineTextkonstante);

Re: Verkäufercode muss gefült werden

28. Januar 2009 13:24

Danke dir Natali...

aber sobald ich auf ok klicke schliest sich die maske..

hmmm wo in welchem teil der maske muss ich diese funktion reinpacken.

damit es funktuniert.

Re: Verkäufercode muss gefült werden

28. Januar 2009 13:44

das liegt doch dran wo du das haben moechtest! wenn der Beleg gebucht wird? wenn eine Zeile angelegt wird, oder wann? wenn du dir die Frage beantworten kannst, weisst du auch ca. wo der code hin muss.

Re: Verkäufercode muss gefült werden

28. Januar 2009 13:58

ok habe verstanden.

sobald mann da feld verlest kommt die meldung .

wie kann ich es denn machen das die maske sich nicht schliest.

Re: Verkäufercode muss gefült werden

28. Januar 2009 14:04

nav4 hat geschrieben:aber sobald ich auf ok klicke schliest sich die maske..

Das ist richtig, weil du zu diesem Zeitpunkt den Datensatz noch nicht verlassen hattest. Verschieb deinen Quelltext mal in den OnModify-Trigger.
Wenn das noch immer nicht funktioniert, muss diese Meldung eben viel später kommen, z.B. bei der Freigabe (ohnehin zu empfehlen).

Re: Verkäufercode muss gefült werden

28. Januar 2009 14:21

hmmmmm :-(

die maske wird trotzdem geschlossen.

ich habe es wie du es gesagt hast mit in diesen Tigergepckt.

Form onModify record ()

Re: Verkäufercode muss gefült werden

28. Januar 2009 14:27

nav4 hat geschrieben:hmmmmm :-(

die maske wird trotzdem geschlossen.

ich habe es wie du es gesagt hast mit in diesen Tigergepckt.

Form onModify record ()

Dann würde ich diese Prüfung in die Freigabefunktion integrieren. Ich nehme an, dass dies euer NAV-Partner für euch tun muss.

Re: Verkäufercode muss gefült werden

29. Januar 2009 11:41

Kannst du die TESTFIELD(); Funktion nutzen?!? Keine Ahnung ob die Funktion standart in Nav vorhanden ist.
So habe ich das für einige Felder gelößt.

Aber wir haben es bei uns so gemacht, das direkt beim anlegen die Verkäufercodes gefüllt werden, so muss nichts mehr händig eingetragen werden.

Re: Verkäufercode muss gefült werden

29. Januar 2009 11:45

t.fischer hat geschrieben:Kannst du die TESTFIELD(); Funktion nutzen?!?

Hat hier die gleiche Auswirkung wie ERROR, nur die Fehlermeldung ist eine andere.

Re: Verkäufercode muss gefült werden

29. Januar 2009 14:31

versuche es mal auf dem Trigger " OnQueryCloseForm"

mfg
Michael

Re: Verkäufercode muss gefült werden

29. Januar 2009 14:35

mespelage hat geschrieben:versuche es mal auf dem Trigger " OnQueryCloseForm"

Stimmt, guter Ansatz!
Hinweis für nav4: Wenn das Feld gefüllt ist, dann musst du
Code:
EXIT(TRUE);
in den Code einfügen. Sonst kann die Form nämlich trotzdem nicht geschlossen werden.

Re: Verkäufercode muss gefült werden

29. Januar 2009 14:40

Natalie:
warum Exit(TRUE) ?
Die Form soll doch nicht geschlossen werden, wenn kein Eintrag erfolgt ist.

Micahel

Re: Verkäufercode muss gefült werden

29. Januar 2009 14:47

mespelage hat geschrieben:versuche es mal auf dem Trigger " OnQueryCloseForm"

Da kommt man trotz fehlender Eingabe im Pflichtfeld auch raus, indem man einen Datensatz weiter springt und dann die Form schließt.

Man müsste doch nur wissen, zu welchem Zeitpunkt/bei welcher Eingabe das Pflichtfeld auf jeden Fall gefüllt sein muss. Ist es ein bestimmtes Feld, fragt man das Pflichtfeld in dessen OnValidate ab (da muss man ja auch gar nicht errorn, eine Messagebox samt Zurücksetzen des Feldes tuts doch auch). Sonst gibt es doch immer einen Punkt zur Weiterverarbeitung (Buchen, freigeben ->Natalies vorheriger Vorschlag), an dem man das Feld abprüft.

Re: Verkäufercode muss gefült werden

29. Januar 2009 14:48

mespelage hat geschrieben:Die Form soll doch nicht geschlossen werden, wenn kein Eintrag erfolgt ist.

Der Trigger greift erst, wenn der Benutze VERSUCHT, die Form zu schließen.
Hat natürlich einen konzeptionellen Nachteil: Der Trigger greift NICHT, wenn der Benutzer den Datensatz wechselt und dabei den Verkäufercode leer lässt.
Die Prüfung findet nur auf dem Datensatz statt, auf dem der Benutzer gerade steht, wenn er versucht, die Form zu schließen.

Ein OnQueryCloseForm-Trigger ohne EXIT(TRUE) führt zu einer nie schließbaren Form -> Bug!

Ich bleibe dabei: Die Prüfung gehört in die Freigabefunktion. ;-)

Re: Verkäufercode muss gefült werden

29. Januar 2009 15:16

Natalie hat geschrieben:Ein OnQueryCloseForm-Trigger ohne EXIT(TRUE) führt zu einer nie schließbaren Form -> Bug!

funktioniert bei mir auch ohne Exit(True)
Code:
IF Salesperson = '' THEN
  ERROR('verkäufercode wurde nicht gefüllt');

Natalie hat geschrieben:Ich bleibe dabei: Die Prüfung gehört in die Freigabefunktion. ;-)

hier gebe ich die natürlich Recht. Die Abfrage sollte entweder in der Funktion selbst, oder vor dem Aufruf in der Form erfolgen.

Michael

Re: Verkäufercode muss gefült werden

30. Januar 2009 12:16

Hallo Leute,

hier mein Vorschlag:

Tab37 "Sales Line"
Trigger "No. - OnValidate"
SalesHeader.TESTFIELD("Salesperson Code");

Variable "SalesHeader" sollte bereits definiert sein - ist ein Record der Tabelle "Sales Header".

Funktioniert bei uns.

Gruß
smaug