+1 800 256 3608 (toll-free in North America) or +49 7531 9060-10| service@combit.com

Explizite Angabe einer Feldvariable

Hallo zusammen,

gibt es eine Möglichkeit (per Syntax oder Funktion), den Wert einer Feldvariablen (Array) direkt anzugeben?

In VBA wäre z.B. Array("Text1", "Text2, "Text3") eine solche Angabe, in Matlab ist dies durch Setzen von Klammern möglich.

Auch wäre es nützlich, singleValue-Variablen zu Feldern vereinen zu können oder mehrere Felder aneinanderzuhängen.
Geht sowas auch in L+L?

Besten Dank
Chris

Leider ist mir noch nicht gänzlich bewusst, was denn gemacht werden soll. Können Sie hier vielleicht noch die Zielsetzung skizzieren? Wie genau soll dann der Ausdruck oder Export aussehen? Wie sieht die Datenstruktur derzeit aus, die Sie an List & Label übergeben?

Hallo Herr Preuschoff,

ich würde gerne z.B. in einer Tabelle in der Spalte 1 eine Variable (nennen wir sie col1) anzeigen lassen. Diese Variable ist jedoch kein Feld, sondern ein Ausdruck, der die Daten eines Feldes repräsentiert, sich also aus anderen Einzelwerten (oder gar Feldern) zusammensetzt.

(Wunsch-)Beispiel:
Der Ausdruck col1=["Text1", TextVar1, TextVar2] würde col1 als dreielementiges Textfeld definieren, sofern TextVar1 und TextVar2 einelementige Texte sind.

Der Sinn wäre, Daten, die nicht als Tabellen organisiert sind, im Bericht in Tabellenform darzustellen, ohne immer gleich die Tabellenstruktur anfassen zu müssen, wenn sich die Anzahl der Elemente (Zeilen) ändert.
Ferner könnte man z.B. auch für Diagramme Datenbereiche aneinanderhängen, die von der Datenbasis her nicht zusammenhängend sind.

Ich hoffe, das war in etwa verständlich.

Beste Grüße
Chris

Haben Sie die Möglichkeit mit einem Berichtscontainer zu arbeiten?

Wenn ja, so könnte man darüber nachdenken innerhalb des Berichtscontainers eine Tabelle mit freiem Inhalt zu verwenden (Auswahlmöglichkeit bei Anlage eines neuen Elements über ein Tabellen-Objekt). Hierbei sind Sie in der Lage Variablen zu nutzen, welche vorab an List & Label übergeben wurden. Diese Variableninhalte können in Ihrer Anwendung zuvor mit den benötigten Informationen befüllt werden, sodass die korrekte Ausgabe möglich wird. Innerhalb der freien Tabelle können Sie mit Zeilendefinitionen und Spalten arbeiten, sodass die gewünschte Darstellungsform darüber einfach erreicht werden kann.

Zudem bietet der Berichtscontainer ebenfalls die Möglichkeit neben den eigentlich auszugebenden Daten und der freien Tabelle auch Diagramme darzustellen.

Ich verwende derzeit Berichtscontainer und auch Tabellen mit freiem Inhalt.
Hier kann man natürlich einzelne Zeilen mit Inhalten befüllen, wobei man dann jeder Zelle einen entsprechenden Variablenwert zuordnen muss.
Der Nachteil dabei ist, dass ich beim Design der Tabelle schon wissen muss, wie viele Zeilen es wohl werden (könnten). Sind es weniger Zeilen (weil die Variablen gar nicht da oder leer sind), muss ich das aktuell über relativ komplexe Abfragen mit Exists() etc. lösen. Sollten zusätzliche Zeilen benötigt werden, muss ich die Tabelle von vorne herein entsprechend erweitern.

Im Prinzip geht es mir darum, die Templates entsprechend dynamisch gestalten zu können, obwohl der Datenbestand relativ heterogen ist. D.h. die zur Verfügung stehenden Variablen sind mal da, mal nicht.
Dazu stehen mir aktuell zusätzliche Variablen zur Verfügung, die aus einer config-Datei (könnte auch eine INI-Datei sein) eingelesen werden und die ich je nach Anwendung anpassen kann, ohne das eigentliche Template anzufassen.

Nun wäre es schön, wenn ich in dieser config-Datei Ausdrücke wie
col1=["Text1", TextVar1, TextVar2]
schreiben könnte, so dass ich innerhalb L+L mit Evaluate(col1) oder derzeit Evaluate(GetValue("col1")) eine Feldvariable erhalte, deren Länge “von außen” vorgegeben ist.
Generell wäre zusätzlich wünschenswert, wenn in der Datei auch gültige L+L-Ausdrücke stehen dürften und diese direkt verarbeitet würden … so als ob ich den String in den Dialog zur Erstellung einer Benutzervariablen eingegeben hätte.

Über diesen config-Mechanismus können (alternativ) auch direkt ganze Felder eingelesen werden, d.h. ich kann damit eine Feldvariable erzeugen, die (wie oben) die Werte
"Text1" (mit Anführungsstrichen)
TextVar1
TextVar2
als Text enthält.

Um nun das ganze wieder auszuwerten, brauche ich wieder ein Evaluate(), weil ich in dem Feld ja die Inhalte von TextVar1 und TextVar2 haben möchte und nicht die Variablennamen.
Allerdings scheint Evaluate() hier nicht elementweise zu wirken … oder mache ich da etwas falsch?

© combit GmbH