0

Dynamisches Mehrfachauswahlfeld in Berechnungsfeld einlesen und switch case integrieren?

Hallo zusammen,

 

Ich habe in einer Tabelle Anschreiben ein dynamisches MehrfachAuswahlfeld

 

welches mir die Rechnungen der Tabelle '4. Rechnungen anzeigt.

In einem Berechnungsfeld habe ich folgendes Script:

 

join(for i in numbers(RG) do
"Rechnung Nummer " + record('4. Rechnungen',i).Rechnungsnummer_ + "
Mustertext "
end, "

")

 

Alles wird im Berechnungsfeld auch so angezeigt, wie es soll 

 

Rechnung Nummer 2022/0001

Mustertext

 

Nun komme ich nicht weiter, denn ich möchte im Berechnungsfeld anstelle von "Rechnung Nummer" und "Mustertext" ein switch case einbauen, d.h ich habe das fettgedruckte switch case durch "Rechnung Nummer" ersetzt:

switch number('4. Rechnungen'.Rechnungstitel) do
case 1:
"
Rechnung Nummer "
case 2:
"
Stornorechnung Nummer "
case 3:
"
Korrekturrechnung Nummer "
case 4:
"
Vorschußrechnung Nummer "
case 5:
"
Provisionsgutschrift Nummer "
case 6:
"
Gutschrift Nummer "
case 7:
"
Rechnung Nummer "
end

 

Leider wird mir switch case nicht angezeit, sondern nur die Rechnungsnummer_.  "Mustertext" habe ich genauso durch switch case ersetzt, leider auch ohne Erfolg

 

Hat jemand eine Idee, wo der Fehler im Script liegen könnte oder wo/wie switch case korrekt eingesetzt wird, denn es wird auch kein Fehler 'angemeckert?

 

Vielen Dank schon mal.

 

Gruß Kruna

10 Antworten

null
    • Leonid_Semik
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Kruna,

    '4. Rechnungen'.Rechnungstitel - gibt einen Text zurück? Dann wird es mit number('4. Rechnungen'.Rechnungstitel) immer ein 0 geben. Hier muss der Name des Auswahlfeldes stehen.

     

    Leo

    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    HAllo Leo,

     

    Entschuldige, aber ich weiß nicht, ob ich dich richtig verstande habe. Der Name des des AUswahlfeldes in Tabelle '4.Rechnungen' lautet Rechnungstitel.

     

    Ich habe mal eine BeispielDB  Join_Switch_TestDB im Webinar hochgeladen.

     

    Es gibt zwei Berechungsfelder. Im ersten Berechnungsfeld '4. Rechnungen - Rückverknüpfung' sieht man, was ich eigentlich erreichen möchte, dh je nach Rechnungstitel verändert sich der Text .

    Das Problem ist aber, wenn ich zB eine Position in RG doch nicht möchte und lösche, dann ist auch die RG gelöscht.

    Über ein dynamisches Mehrfachauswahlfeld passiert das nicht, siehe zweites Berechnungsfeld 'DynamischesMehrfachAuswahlfeld'. Ich bekomme es aber ienfach nicht hin, dass sich der Text verändert je nach Auswahl in 4. Rechnungen.Rechnungstitel (einfaches Auswahlfeld). Ich hoffe, das die DB verständlciher anzeigt, was ich erreichen möchte.

     

    Eine zweite Frage dazu wäre, ob ich im dynamischen MehrfachAuswahlfeld je nach Kunde, die RG filtern kann, zB wenn ich Kunde A habe, dann werden mir im dynamischen Mehrfachauswahlfeld nur die Rechnungen von Kunde A angezeigt?

     

    Vielen Dank nochmals,

    Gruß Kruna

    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    HAllo zusammen,

     

    ich habe es nach langem tüfteln, irgendwie doch noch geschafft!! Wahrscheinlich gibt es viel elegantere und einfachere Lösungen, aber ich bin froh, dass es erst einmal auch so klappt.

     

    Jetzt bleibt nur noch die Frage, ob es die Möglichkeit gibt, dass man im DMFAF zB die Rechnungen filtert, dh wenn ich aus der verknüpften Tabelle 'Kunde' A auswähle, werden mir im DMFAF nur  die Rechnungen von Kunde A angezeigt?

    Ich kann leider hierzu nichts finden oder habe nicht richtig gesucht.

    • Leonid_Semik
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Kruna,

    habe jetzt in deiner DB die Änderungen forgenommen:

    1. Verknüpfung Kunde: Trigger nah Änderung

    RG := null

    2. DMAF RG : Dynamischer Wert

    Kunden.Rechnungen

    3. Funktionsfeld DynamischesMehrfachAuswahlfeld: Funktion

    join(for i in numbers(RG) do
    switch record('4. Rechnungen',i).Rechnungstitel do
    case 1:
    "
    Rechnung Nummer "
    case 2:
    "
    Stornorechnung Nummer "
    case 3:
    "
    Korrekturrechnung Nummer "
    end + record('4. Rechnungen',i).Rechnungsnummer + "
    Mustertext für ______" + record('4. Rechnungen',i).RE_Positionen.Artikel.Strasse + ", " + record('4. Rechnungen',i).RE_Positionen.Artikel.PLZ + record('4. Rechnungen',i).RE_Positionen.Artikel.Ort
    end, "

    ")

     

    Leo

      • Kruna
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Hallo Leo,

      entschuldige, dass ich das Thema noch einmal aufgreife,aber ich bin gerade dabei, das Script zu ertweitern, komme jedoch nicht weiter und bitte Dich noch einmal um Hilfe. Wahrscheinlich ist es 'easy peasy', aber ich kriege es einfach nicht hin.

      Es geht um den letzten Teil Deines Scripts:

       

      record('4. Rechnungen',i).RE_Positionen.Artikel.Strasse + ", " + record('4. Rechnungen',i).RE_Positionen.Artikel.PLZ + record('4. Rechnungen',i).RE_Positionen.Artikel.Ort

       

      Mir ist klar das durch RE_Positionen, wenn es mehrere Positionen sind, auch alle angezeigt werden. Ich möchte jedoch, dass nur eien Position angezeigt wird.

      Mit first() oder last() sollte es doch gehen oder?

      Ich habe schon gefühlt an jeder möglichen Position first() eingesetzt, jedoch ohne Erfolg. Könntest Du mir bitte aufzeigen, wo es hinkommt?

      Gibt es noch weitere Möglichkeiten zB unique() oder ähnliches?

      Vieln Dank schon mal.

      Gruß Kruna

      • mirko3
      • vor 1 Jahr
      • Gemeldet - anzeigen

       first() oder last() kannst Du an folgender Stelle einfügen

      record('4. Rechnungen',i).last(RE_Positionen).Artikel.Strasse +
          ", " +
          record('4. Rechnungen',i).last(RE_Positionen).Artikel.PLZ +
          record('4. Rechnungen',i).last(RE_Positionen).Artikel.Ort
      

      Wenn es Dir aber nur um die Form dieser Aufzählung geht, dann probiere doch mal folgendes. Vielleicht gefällt es Dir so. Mirko

      join(for i in numbers(RG) do
          switch record('4. Rechnungen',i).Rechnungstitel do
          case 1:
              "
      Rechnung Nummer "
          case 2:
              "
      Stornorechnung Nummer "
          case 3:
              "
      Korrekturrechnung Nummer "
          end +
          record('4. Rechnungen',i).Rechnungsnummer +
          "
      Mustertext für ______
      " +
          join(record('4. Rechnungen',i).RE_Positionen.Artikel.(Strasse + ", " + PLZ + ", " + Ort), "
      ")
      end, "
      ")
      
      • Kruna
      • vor 1 Jahr
      • Gemeldet - anzeigen

      guten Morgen Mirko und vielen DAnk.

       

      Ich habe nun

      join(record('4. Rechnungen',i).Rechnungspositionen.'Werbeträger'.(Standortbezeichnung + ", " + PLZ + ", " + Ort)

      eingesetzt und ja, gefällt mir besser, da das Script kürzer und übersichtlicher ist. Nun habe ich last eingebaut, also

      join(record('4. Rechnungen',i).last(Rechnungspositionen).'Werbeträger'.(Standortbezeichnung + ", " + PLZ + ", " + Ort)

      und es wird angemeckert. I denke, dass es evtl mit der Klammer zu tun haben könnte, das diese eventuell nicht nach Rechnungspositionen kommt, sonders irgendwo anders?

       

      Gruß Kruna

      • mirko3
      • vor 1 Jahr
      • Gemeldet - anzeigen

       Ja, das geht auch nicht. last() nimmt ein Array entgegen und gibt einen Sting aus. join() nimmt ein String-Array entgegen und gibt einen String aus, kann also mit einem String nichts anfangen und meldet einen Fehler. In diesem Fall löscht Du einfach join() und hast Dein Ergebnis.

      Mustertext für ______
      " +
          record('4. Rechnungen',i).RE_Positionen.Artikel.(Strasse + ", " + PLZ + ", " + Ort)
      end, "
      ") 
      • Kruna
      • vor 1 Jahr
      • Gemeldet - anzeigen

      yessss! So einfach kann es sein....wenn man es weiß! 😅

      Einige Dinge wollen einfach nicht in meinen Kopf rein. String, Array, Schleife...etc pp. Das ist so abstrakt für mich, dass ich mir da keine 'Eselsbrücken' schaffen kann, um mal irgenwie über das 'kleine 1x1' hinauszukommen. Deswegen bin ich sehr dankbar über dieses Forum mit all' den tollen Leuten hier, die so viel Wissen teilen und sehr hilfsbereit sind.

      Vielen, vielen Dank für Deine Hilfe.👍

      Ich wünsche noch einen schönen Sonntag.

      Gruß Kruna

    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    HAllo Leo,

     

    vielen tausend Dank auch an dieser Stelle für Deine Hilfe und Mühe!!!!

    Ich werde es gleich umsetzen bzw. noch ein paar Dinge anpassen.

     

    Gruß Kruna