Gelöst: Werte auslesen und zurückschreiben

18. Dezember 2018 19:15

Hallo zusammen,

eine Frage zum obigen Thema.
Folgende Situation. Ich habe in der Kontakttabelle verschiedene weitere Records wie auch Boolean Werte.
Nun ist es so das ich die Records im System an weiteren Stellen auslesen möchte und den neuen Wert zurück an den Kontakt schreiben möchte.

Konkret kann man sich folgendes Beipiel vorstellen. Ich habe einen Booleanwert am Kontakt, den möchte ich im Rahmen einer Bearbeitung (Berichtspage für den Aussendienst) auslesen (Boolean > Booelean) und wenn Bericht durch Aussendienst bearbeitet wird dann den neuen Booleanwert (Boolean < Boolean) zurück an den Kontakt schreiben.

Würde mich freuen Unterstützung zu bekommen.

Viele Grüße Frank
Zuletzt geändert von fframbach am 2. Januar 2019 16:55, insgesamt 1-mal geändert.

Re: Werte auslesen und zurückschreiben

20. Dezember 2018 15:33

fframbach hat geschrieben:(1) Ich habe in der Kontakttabelle verschiedene weitere Records wie auch Boolean Werte.
(2) ich die Records im System an weiteren Stellen auslesen möchte und den neuen Wert zurück an den Kontakt schreiben möchte.
(3) Ich habe einen Booleanwert am Kontakt, den möchte ich im Rahmen einer Bearbeitung (Berichtspage für den Aussendienst) auslesen (Boolean > Booelean) und wenn Bericht durch Aussendienst bearbeitet wird dann den neuen Booleanwert (Boolean < Boolean) zurück an den Kontakt schreiben.


Hallo Frank

ich bin mir nicht sicher, ob du Programming 1 und 2 in NAV schon besucht hast? Ich habe deine Sätze enumeriert, mal sehen ob ich dich korrekt verstanden habe?

(1) Record ist ein Datensatz einer Tabelle oder auch Variablendefinition (Verweis) unter den C/AL Globals oder Locals auf Tabelle.
Boolean ist eine boolsche Variable. Diese boolsche Variable kann ein Teil eines Records (Datensatzes) sein. Bsp Artikel Tabelle, Feld gesperrt ist vom Typ boolean. Du kannst dort einen Haken setzen.

(2) Unter www.navision24.de steht wie man Records ausliest. Dazu definierst du eine globale oder locale Variable vom Typ Rec und filterst darauf. Bsp. von mir frei erfunden, filtern auf alle Kontakte mit Nachnamen Meyer, Ländercode CH und segmentieren = Nein (boolsche Variable im Standard NAV), von denen du die Telefonnumer ausliest und in deine benutzerdefinierte 50000er Zieltabelle schreibst:
Code:
global_Contact.SETRANGE(Name,'Meyer');
global_Contact.SETRANGE("Country/Region Code",'CH');
global_Contact.SETRANGE("Exclude From Segment",FALSE);
IF global_Contact.FINDSET THEN
         REPEAT
            deineTabellenRecordVariable.SETRANGE(KundenNummer,global_Contact."No.");
            deineTabellenRecordVariable.SETRANGE(KundenName,global_Contact.Name);
            deineTabellenRecordVariable.SETRANGE(TelefonNr,global_Contact."Phone No.")
            IF NOT deineTabellenRecordVariable.FINSET THEN BEGIN
                        deineTabellenRecordVariable.INIT;
                        deineTabellenRecordVariable.INSERT;
                        deineTabellenRecordVariable.TelefonFeld := global_Contact."Phone No.";
                        deineTabellenRecordVariable.MODIFY;
             END;
         UNTIL global_Contact.NEXT = 0


(3) das mit dem Report oder Berichtspage für den Aussendienst und Boolean > Booelean musst du bitte näher erläutern, ich verstehe dich leider nicht.

Re: Werte auslesen und zurückschreiben

21. Dezember 2018 09:22

Hallo,

vielen Dank für deine Nachricht. Eventuell habe ich mich etwas befremdlich ausgedrückt.

(1) steht ausser Frage

(2) Am Kontakt habe ich ein Boolean das ich in einer anderen Page bearbeiten (JA/NEIN) und dann wieder zurück an den Kontakt zurückschreiben möchte

(3) siehe (2)

Hoffe das es nun in der kurzen Version einfacher zu verstehen ist und ja ich habe Programming 1 in NAV besucht ist aber schon ein paar Jahre her.

Viele Grüße

Re: Werte auslesen und zurückschreiben

21. Dezember 2018 17:38

fframbach hat geschrieben:Hallo,

vielen Dank für deine Nachricht. Eventuell habe ich mich etwas befremdlich ausgedrückt.

(2) Am Kontakt habe ich ein Boolean das ich in einer anderen Page bearbeiten (JA/NEIN) und dann wieder zurück an den Kontakt zurückschreiben möchte


Das wird eine sehr lange Antwort, bitte anschnallen, ich hab ein paar Std. investiert, da ich normalerweise nur als Projektleiter und Business Analyst in NAV tätig bin und sehr selten programmiere.

1. Auf Kontakt Form 5050 ein Button mit dem Namen BoolVarButton eingefügt, HorzGlue Left, VertGlue Botton.
Im OnPush ( ) Trigger steht: //ContactBool ist ein 50000er Report, SetContactHeader ist eine Funktion darin:

Code:
ContactBool.SetContactHeader(Rec);
ContactBool.RUNMODAL;
CLEAR(ContactBool);


2. Auf der Tabelle 5050 Contact habe ich ein Extrafeld hinzugefügt:
BoolField Typ Boolean
Dieses habe ich in die Kontakt Form eingefügt, damit es anklickbar ist

3. 50000er Report ContactBool erstellt mit Variablen und folgendem Code:
Variablen und Funktion:

Name DataType Subtype Length
ReportBoolVariable Boolean
ReportContactHeader Record Contact
ContactHeader Record Contact
ReportContactBool Report ContactBool
CodeNo Code 20

Functions:
SetContactHeader //sie hat als Parameters: [x] VAR: ReportNewContactHeader von Typ Record Contact

SetContactHeader(VAR ReportNewContactHeader : Record Contact) Trigger:
Code:
   
  ReportNewContactHeader.TESTFIELD("No.");
  ReportContactHeader := ReportNewContactHeader;



4. Auf dem Report noch Code hinzugefügt im Trigger:
Report - OnPostReport()

Code:

IF ReportBoolVariable THEN BEGIN
  MESSAGE ('WAHR');
  ContactHeader.GET(ReportContactHeader."No.");
  ContactHeader.BoolField := TRUE;
  ContactHeader.MODIFY;
END;

IF NOT ReportBoolVariable THEN BEGIN
  MESSAGE ('FALSCH');
  ContactHeader.GET(ReportContactHeader."No.");
  ContactHeader.BoolField := FALSE;
  ContactHeader.MODIFY;
END;


Die Globalen Variablen im Report sind:

Name DataType Subtype Length
ReportBoolVariable Boolean
ReportContactHeader Record Contact
ContactHeader Record Contact
ReportContactBool Report ContactBool
CodeNo Code 20

Und die einzige Funktion:
SetContactHeader

Diese Funktion hat als Variable
ReportNewContactHeader von Typ [x] Var

Nach dem Kompilieren klappt alles 100%:

ich klicke auf den Button auf der Form Kontakt, es wird der Report aufgerufen und in der Request Form setze ich das Boolsche Feld bzw. checke es aus und sobald ich auf Seitenansicht klicke und der Report ausgeführt wird, wird in die Form Kontakt zurückgeschrieben in das Boolsche Feld, welches entsprechend gesetzt wird.

Alles unter NAV 2009 Classic Client umgesetzt. Für 2016 RTC Client musst du nur das mit RUNMODAL umbasteln, da es in dieser Version nicht mehr existiert, soweit ich mich erinnere? Die C/AL Experten im Forum wissen sicherlich mehr.

Für Fragen stehe ich dir gern per Privater Message zur Verfügung.
Gerne kann ich von der C/AL Programmierung und von der Form bzw. Report Request Form ein Video drehen und auf Youtube hochladen, wenn du mit der Erklärung hier nicht weiterkommst...

Viele Grüsse und schönes Weihnachtsfest!

Gelöst: Werte auslesen und zurückschreiben

2. Januar 2019 16:53

Frohes neues Jahr und vielen Dank für Deine Bemühungen.