MultiSelect in Listen mit Übergabe der ausgewählten Einträge an Bericht

Babelfish42

Neues Mitglied
Hallo liebe Entwicklergemeinde,

Sage 100 9.04 aktueller Stand mit unterstütztem MultiSelect in Strukturelement und Kontextmenueintrag

ich verzweifle grade an der korrekten Übergabe einer semikolon-selektierten Parameterliste an die SQL-Where Bedingung mit dem Parameter
AND 1 = 1 AND -1 = CFN_AppendAndParameterFromTo('Adresse','a.Adresse').

2023-02-23_173004.jpg
Ich hab mal zum besseren Verständnis das Selektionselement für den Bericht sichtbar gemacht. Aus den einzelnen selektierten Einträge der Liste wurde also eine meiner Meinung nach korrekte semikolon-getrennte Liste mit den entsprechenden Nummern erstellt.

Sehe ich mir die zur Laufzeit erstellte Abfrage an, dann bleibt die IN-Liste allerdings leer ... AND 1 = 1 AND a.Adresse IN () und läuft auf einen Fehler (statt den obigen Parameter zu übergeben z.B. IN (123,456,789).
Wenn ich nur einen Eintrag in der Liste selektiere, dann wir der Parameter im IN-Statement korrekt ersetzt, also ... AND 1 = 1 AND a.Adresse IN (123)
Habe ich da was übersehen, eine besondere Definition des 'Adresse'-Parameters evtl. oder ist der MultSelect noch fehlerbehaftet?

Danke für Eure Hilfe
 
Hallo,

liegt es vielleicht daran, dass du bei einem IN-Statement mit einer kommagetrennten Liste arbeiten musst, aber eine semikolonseparierte Liste eingefügt wird? Welcher Fehler taucht denn auf, Fehler bei der Ausführung des Commands? Am besten mal im TraceLog prüfen.

Viele Grüße
Marcel
 
Hm ja Marcel könnte man meinen, aber bei Auswahl MuliSelect ja im zugehörigen Strukturelement aufgeführt, daß automatisch eine semikolon-separierte Liste erstellt wird, ich nehme da auch keinen Einfluß darauf, etwa durch iteratives Erstellen des Wertes durch eine Schleife, nur durch den Eintrag im Makro

2023-02-24_194413.jpg

wird der Parameterwert über alle selektierten Zeilen erstellt, z.B. 12;23;34 wenn ich 3 Zeilen markiere. Das System sollte es dann bei Einsatz von
AND -1 = CFN_AppendAndParameterFromTo('Adresse','a.Adresse') im SQL umsetzen in AND a.Adresse IN (12,23,34). Es wird aber ein leerer string übergeben und man erhält AND a.Adresse IN () und läuft auf einen SQL-Fehler.
Bei Auswahl nur einer Zeile aus der Liste funktioniert die Ersetzung korrekt, also etwa AND a.Adresse IN (12).

Im Strukturelement ist der Parameter wie gefordert einer Datenklasse zugeordnet (clsAdresse) vom Typ String.


Viele Grüße
Wolfgang
 
Hallo Wolfgang,

ich konnte das Problem nachvollziehen und konnte den "Fehler" beheben. Wenn du sowohl in der Datenquelle der Liste, als auch in der Datenstruktur das Feld "Adresse" als String definierst, funktioniert die korrekte Weitergabe an den Bericht mit CFN_AppendAndParameterFromTo.

Im Datenstruktur-Feld muss "Multiselect erlaubt" aktiviert sein.

Wenn beides als String definiert ist, fügt er die Adressen ins Selektionselement mit Anführungszeichen ein:
1677490810246.png
und das IN-Statement passt:
1677490945383.png

Das liegt an der Stelle an der "Übersetzung" der Parameterliste und des Befehls CFN_AppendAndParameterFromTo in ein sinnvolles IN-Statement. Wenn das Datenstrukturfeld als String definiert ist, braucht er unbedingt die Anführungszeichen. Mit einem Datenstrukturfeld vom Typ Integer kommt der AppDesigner nicht klar und fügt bei einer Mehrfachselektion eine 0 ein (wahrscheinlich weil ein Semikolon nichts in einem Integer zu suchen hat).
Ich schätze solange es mit Strings funktioniert, wird Sage den Fehler ziemlich weit nach hinten stellen, wenn er gemeldet wird.

Ich hoffe ich konnte dir helfen!

Viele Grüße
Marcel
 
Hallo Marcel,

Vielen Dank für Deine Hilfe. Ja da muss man erst darauf kommen, dass man den Parameter an beiden Stellen als String definieren muss, obwohl die Adresse ein integer-Feld darstellt. Im Strukturelement ist die Datenstruktur ja noch vom Typ String, aber dass auch in der Datenquelle selbst der Parameter zwingend vom Typ String definiert werden muss ist nirgends hinterlegt. Da kann man dann auch ewig suchen.

Nochmals Vielen Dank, jetzt funktioniert die Berichtsausgabe, die hinter der Mehrfachauswahl steckt, perfekt.

Schöne Grüße aus Bayern
Wolfgang
 
Zurück
Oben