Abfrage ob Feld vorhanden oder nicht verhält sich im Designer und beim PDF-Export anders

Ich bekomme bestimmte Daten manchmal geliefert, manchmal nicht (siehe hierzu auch mein letztes Posting Benötige variabel hohe Kästchen außerhalb Berichtscontainer - #3 by karle25).

Um diese Felder abzufragen um sie nur dann auszudrucken falls vorhanden, benutze ich
Cond(Exists(“FieldsLevel1.Asset_Rechnung_Datum”), GetValue(“FieldsLevel1.Asset_Rechnung_Datum”), “”)

Dies funktioniert im Designer, jedoch nicht beim Export in eine PDF (ob es beim Druck geht weiß ich nicht, wir gehen immer über die PDF).
Die angelieferten Daten sind beim Designer-Aufruf und beim Export identisch, dies habe ich überprüft. Es bleibt eigentlich nur noch die Bedingung als Ursache.

Es wurde voreingestellt (beim Designer-Aufruf und beim Export):
LL.DataMember = LlData.DataTableName_FieldsLevel1;
LL.AutoMasterMode = LlAutoMasterMode.AsVariables;
LL.AutoProjectType = LlProject.List;

Wie kann das sein, was ist dort anders bzw. was ist zu beachten? Evtl. eine andere Abfrage? Welche?

Können Sie einmal versuchen, die Eigenschaft CheckUsedIdentifiers der LL-Komponente auf false zu setzen? Dies ist notwendig, wenn mit dynamischen Datenstrukturen gearbeitet wird.

Damit scheint es zu funktionieren, erste Tests haben geklappt.
Am Montag werden weitere Tests gemacht, sollte wider Erwarten noch was sein, melde ich mich nochmals.
Danke für den Tipp!

Nur zu meinem Verständnis: Sehe ich das richtig dass, dadurch dass ich das Feld “FieldsLevel1.Asset_Rechnung_Datum”
innerhalb des gesamten Formulars nur innerhalb einer Cond()- bzw. Exists()-Bedingung verwendet habe, dieses nicht im Abschnitt “[UsedIdentifiers]” der .lst-Datei auftaucht und es dadurch stillschweigend als nicht vorhanden ignoriert wird, was dann durch CheckUsedIdentifiers=false unterdrückt wird?
Sollte dies so sein, wäre es nicht sinnvoll (=Vorschlag für spätere Versionen), innerhalb der LL-Logik auch die Cond- bzw. Exists-Felder in die Suche nach verwendeten Feldnamen einzubeziehen?

Ja, genau, so ist das.

Bei dem Vorschlag gäbe es das klassische Henne-Ei-Problem, die UsedIdentifiers werden für verschiedene Validierungen verwendet, so dass es dann - wenn das Feld einmal nicht vorhanden ist - wieder zu Fehlern kommen könnte. Das wäre im Zweifel auch von der Datenquelle abhängig (ICanHandleUsedIdentifiers-Interface) - je nachdem wie diese auf die Frage nach einem nicht vorhandenen Feld reagiert. Solange Ihre Datenquelle nicht sehr viele unbenutzte Felder enthält ist die Änderung - wie Sie sie jetzt vorgenommen haben - nahezu performanceneutral.

© combit GmbH