[gelöst] Problem mit Export selbst angelegter Felder

21. November 2008 13:28

Hallo Community,

ich habe hier ein Problem, bei dem ich einfach auf keine funktionierende Lösung komme.

Ich habe in der Tabelle 5050 (Contact) ein paar neue Felder angelegt:

- Filialleiter Nr. --> Code Feld, Table Relation: Contact.No. WHERE (Type=FILTER(Person))
- Filialleiter Name --> Flowfield (Text), Editable: No, CalcFormula: Lookup(Contact.Name WHERE (No.=FIELD(Filialleiter Nr.)))
- Filialleiter Telefon --> Flowfield (Text), Editable: No, CalcFormula: Lookup(Contact."Phone No." WHERE (No.=FIELD(Filialleiter Nr.)))
- Filialleiter E-Mail --> Flowfield (Text), Editable: No, CalcFormula: Lookup(Contact.E-Mail WHERE (No.=FIELD(Filialleiter Nr.)))

So habe ich noch mehr Felder für Ansprechpartner für diverse Bereiche der Filiale. Ich könnte natürlich auch die Verantwortlichkeit "Filialleiter" einrichten und vergeben, aber dann habe ich keine Zuordnung zur Filiale. Sprich ich habe das Unternehmen, lege darunter eine Zweigstelle als Person an und dieser ordne ich einen Personen-Kontakt (Filialleiter) zu.
Hierzu wurde ein extra Reiter auf der Kontaktkarte eingerichtet, in dem die Kontaktnr. (mit CalcFields auf die anderen Felder bei OnAfterValidate) sowie die Felder Name, Telefon und E-Mail eingeblendet werden (vom Filialleiter).
Das funktioniert auch soweit wunderbar, die Zuordnung funktioniert, die Felder werden korrekt angezeigt usw.

Jetzt kommen wir zum Problem:
An den Filialen wird eine Profilbefragung ausgefüllt. Nach dieser wird dann in einem Segment abgefragt.
Nun soll das entstandene Segment exportiert werden, allerdings mit den zugehörigen Filialleitern usw.
Allerdings wird die Kontaktnr. des Filialleiters ohne Probleme exportiert, aber die anderen Felder sind leer.

Im Dataport 5051 (Export Segment Contact) habe ich folgende Zeilen unten angefügt:

Integer:
GM.Ascii2Ansi(Cont.FIELDCAPTION("Filialleiter Nr."))
GM.Ascii2Ansi(Cont.FIELDCAPTION("Filialleiter Name"))
GM.Ascii2Ansi(Cont.FIELDCAPTION("Filialleiter Telefon"))
GM.Ascii2Ansi(Cont.FIELDCAPTION("Filialleiter E-Mail"))

Segment Line:
Cont."Filialleiter Nr."
GM.Ascii2Ansi(Cont."Filialleiter Name")
Cont."Filialleiter Telefon"
GM.Ascii2Ansi(Cont."Filialleiter E-Mail")

Das Lustige an der Sache ist, wenn ich einen ganz normalen Export über den Dataport 5050 (Export Contacts) mache, dann exportiert er die Felder, außer ich verwende die GM.Ascii2Ansi Konvertierung, dann sind die Felder wieder leer.
Diese Konvertierung brauche ich aber, da doch auch immer wieder mal ein Umlaut drin ist wie ein ö, der sonst zu einem “ wird.

Im Dataport 5051 (Export Segment Contacts) ist es wiederum egal, ob ich die Ascii2Ansi Konvertierung drin habe oder nicht, die Felder sind immer leer.


Hat hier jemand einen Lösungsansatz?
Kann man FlowFields generell nicht vernünftig exportieren?
Habe ich irgendwo einen Denkfehler?

Danke im Voraus.

Grüße, Jörg
Zuletzt geändert von Jörg am 30. Juli 2010 10:00, insgesamt 3-mal geändert.

Re: Problem mit Export selbst angelegter Felder

21. November 2008 14:52

Zwei Dinge fallen mir ein bzw. auf.

1.) FlowFields müssen unter bestimmten Umständen zunächst per CALCFIELDS "berechnet" werden.
2.) Warum wendest du die Zeichensatzkonvertierung auf die FIELDCAPTION an? Was nützt dir der Feldname, wenn du doch den Inhalt exportieren willst.

Kann sein, dass ich da in einem oder beiden Punkten einen Denkfehler habe.

Beste Grüße

Falk

Re: Problem mit Export selbst angelegter Felder

21. November 2008 15:12

Hi Falk,

erstmal Danke für die schnelle Antwort.

CALCFIELDS hab ich bei OnAfterValidate von dem Nr.-Feld drin (auf der Form 5050 - Contact Card), über das ich zuweise.
Also in der Table 5050 (Contact) direkt sind die Felder befüllt, werden also wohl nicht nur für die Form berechnet und danach der Inhalt wieder gelöscht.
Kann ich das auch irgendwo im Dataport bzw. am Feld selbst angeben? Da hab ich ehrlich gesagt null Ahnung von.

Die FIELDCAPTION brauche ich beim Segment-Dataport für die Überschriften (der Integer-Teil, das is ein 2-teiliger Dataport).
Da waren alle Zeilen schon mit der Konvertierung versehen, deshalb hab ich das so fortgeführt.

Grüße, Jörg

Re: Problem mit Export selbst angelegter Felder

21. November 2008 15:32

Die CALCFIELDS kannst du im Dataport im OnBeforeExportRecord-Trigger des Contact-DataItem setzen. Versuchs mal, denn Forms haben oft die CalcFields-Option korrekt gesetzt, sodass die FlowFields automatisch "berechnet" werden und die Tabellen-Ansicht im Object-Designer macht das sowieso. Bei Dataports kann das anders aussehen, also solltest du die CALCFIELDS einfach mal setzen.

Re: Problem mit Export selbst angelegter Felder

21. November 2008 15:51

Oh Mann, da hätt ich auch selbst drauf kommen können.
Da kam ich irgendwie nicht auf die Idee, da nachzuschauen :)

Im Segment-Dataport musste ich ein
Code:
Cont.CALCFIELDS("Filialleiter Name");

draus machen, aber so funktioniert's 1A

Vielen Dank, das war genau der entscheidende Hinweis.
Zuletzt geändert von Jörg am 21. November 2008 15:58, insgesamt 1-mal geändert.

Re: [Gelöst] Problem mit Export selbst angelegter Felder

21. November 2008 15:57

Da fällt mir gerade noch ein:

Ich habe das gleiche Problem, wenn ich diese Felder in einer Aktivitätenvorlage einfügen will.
Also über die Codeunit 5054 Wordmanagement bekomme ich die Felder rein (als Seriendruckfeld in Word verfügbar), über ADDFIELD an 3 Stellen (ExecuteMerge, ShowMergedDocument und CreateHeader), aber sie sind nicht befüllt.
Also quasi das gleiche Problem, nur an einer anderen Stelle.

Muss ich hier auch den CALCFIELDS Befehl verwenden? Wenn ja, wo muss dieser eingefügt werden? In der Codeunit direkt?

Re: [Gelöst] Problem mit Export selbst angelegter Felder

21. November 2008 16:22

Jörg hat geschrieben:Muss ich hier auch den CALCFIELDS Befehl verwenden?

Du musst CALCFIELDS überall dort verwenden, wo den berechneten Wert eines FlowFields brauchst.

Wenn ja, wo muss dieser eingefügt werden? In der Codeunit direkt?

Dort wo du gerade den Wert brauchst, also hier in der Codeunit.

Re: [Fast gelöst] Problem mit Export selbst angelegter Felder

21. November 2008 16:41

Hmmm, in der CodeUnit 5054 meckert er CALCFIELDS als ungültige Variable an (zumindest an der Stelle an der ich es versucht habe einzufügen).

Allerdings wird ein CALCFIELDS an diversen Stellen durchgeführt:
Code:
Attachment.CALCFIELDS("Merge Source");


Normalerweise erstellt NAV eine HTML-Quelldatei für Word, wenn ich das richtig weiß.
Dann brauche ich das CALCFIELDS also bei der Erstellung derselben?

Ich habe leider (noch) nicht viel Wissen über C A/L, deshalb bin ich etwas hilflos bei so einer riesigen CodeUnit :)

Re: [Fast gelöst] Problem mit Export selbst angelegter Felder

21. November 2008 17:26

Jörg hat geschrieben:Hmmm, in der CodeUnit 5054 meckert er CALCFIELDS als ungültige Variable an (zumindest an der Stelle an der ich es versucht habe einzufügen).

Du musst die dazu gehörige Recordvariable verwenden, in der du das Feld berechnen möchtest, genauso wie es in dem Beispiel getan worden ist, was du weiter unten veröffentlicht hast, also
Code:
PassendeRecordvariable.CALCFIELDS(DeinFlowField);