0

Dynamisches Mehrfachauswahlfeld auslesen

Ich habe ein dynamisches Auswahlfeld, welches je nach Projekt völlig unterschiedliche Elemente enthält. Für jedes Element, das angewählt wird, benötige ich einen Record in einer anderen Tabelle.

Das dyn. Auswahlfeld heisst "CR_Produktliste", in der Tabelle "CR_Produkte" sollen diese eingetragen werden.

Das Auslesen habe ich mir in einer for-Schleife wie folgt vorgestellt:

let me := this;
for prd_cnt in me.CR_Produktliste do
    let myanswer := dialog("Produkt-Liste erstellen", text(prd_cnt) + " wird eingetragen... ", ["Ja", "Abbrechen"]);
    if myanswer = "Ja" then
        let CR_Prod_Item := (create CR_Produkte);
        CR_Prod_Item.(
            Projekt_CR := me;
            CR_Prd_Bezeichnung := text(prd_cnt)
        )
    end;
end

 

Die for-schleife wird bei mehr als 3 ausgewählten Elementen max 3 durchlaufen, statt so oft wie Elemente ausgewählt, der Inhalt von prd_cnt besteht aus unterschiedlich vielen Einträgen.

Hat jemand eine Idee, was da falsch ist? Danke.

9 Antworten

null
    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hi Miklos. Mal sehen, was ich alles falsch verstanden habe;-)

    Für die Durchführung ist wichtig zu wissen, wie die Tabelle heißt, aus der das dynamische Mehrfachauswahlfeld die Werte bezieht. Ich nenne sie hier DMFAF-Tabelle. Und heißt denn dreimal durchlaufen, dass Du nur die ersten drei Werte haben willst?

    mal ein Beispiel: 

    ary= Array aller Werte des DMFAF

    threeAry=die ersten drei Werte

    Mirko

    let me:= this;
    let ary := numbers(CR_Produktliste);
    let threeAry := for i in range(0, 3) do
            item(ary, i)
        end;
    for j in threeAry do
        (create CR_Prd_Bezeichnung).(
    Projekt_Cr := record(DMFAF-Tabelle,j).text(prd_cnt);
    Projekt_CR := me)
    end
    
      • Ninox Solution-Partner
      • RonaldP
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mirko Miklos Toth
      Ich habe Miklos so verstanden, dass es "dynamisch" verschieden viele Durchläufe geben soll.

      Je nach Anzahl gewählter Optionen im DMFAF, so dass jeweils für alle gewählten Optionen neue Records in der anderen Tabelle erzeugt werden.
      Aktuell wird der Durchlauf immer nach 3 beendet, auch wenn mehr Optionen gewählt wurden.

      Ist das so richtig Miklos?

      VG Ronald

      • Miklos_Toth.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Ronald Polski Hallo Ronald, danke, ja das ist genau richtig. Ich benötige für jedes ausgewählte Item, (also mind. 1 und max alle) einen Record. Und da komme ich aktuell nicht weiter.

    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Ah, ja. Dann müßte es doch aber so gehen.

    let me:= this;
    let ary := numbers(CR_Produktliste);
    for j in ary do
        (create CR_Prd_Bezeichnung).(
    Projekt_Cr := record(DMFAF-Tabelle,j).text(prd_cnt);
    Projekt_CR := me)
    end
    
    • Ninox Solution-Partner
    • RonaldP
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Ich bau das grad mal nach...

    Was mit "Projekt_CR := me" erreicht werden soll ist mir nicht klar geworden...
    Willst Du damit eine Verknüpfung setzen?

      • Miklos_Toth.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Ronald Polski Hallo zusammen, zum Verständnis (vielleicht mache ich es mir auch zu kompliziert...) wir haben eine Liste von Projekten, die eine Untertabelle mit Produkten dieses Projektes enthält ("Liste_Produkte"). Im CR will ich aus der Liste der Produkte diejenigen auswählen, welche bearbeitet werden sollen. Dabei kann es mehrere CRs geben, daher denke ich die Records aus "Liste_Produkte" in "CR_Produkte" zu kopieren und dort abarbeiten zu können. Hintergedanke ist, dass wir so Produkte identifizieren, welche immer wieder CRs benötigen (CR= Change Request). Daum auch die Verknüpfung. Aber vielleicht gehts auch viel einfacher?

      Jedenfalls danke für Eure Hilfe!

    • Ninox Solution-Partner
    • RonaldP
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Miklos Toth
    Ich habe hier dieses Skript, dass führt die von Dir ganz oben gewünschten Aktionen aus:
    Als Ausgangsbasis habe ich deins genommen, das hat bei mir schon in deiner Version mehr als 3 Records erzeugt!

    let me := this;
    let xcx := numbers(CR_Produktliste);
    let myanswer := dialog("Produkt-Liste erstellen", text(CR_Produktliste) + " wird eingetragen... ", ["Ja", "Abbrechen"]);
    if myanswer = "Ja" then
        for prd_cnt in xcx do
            let CR_Prod_Item := (create CR_Produkte);
            CR_Prod_Item.(
                Projekt_CR := me;
                CR_Prd_Bezeichnung := first((select DMFAWF)[Nr = prd_cnt].'Einträge')
            )
        end
    end

    Die Dialogbox hab ich über die Schleife gesetzt, sonst muss man ja x-mal JA klicken.

    hier noch die DB dazu:

      • Miklos_Toth.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Ronald Polski Hallo Ronald, danke, so funzt es! Die Dialogbox war in der Schleife so quasi als Debug. Aber so ist es auch für den Anwender praktikabel.

      Vielen Danke, es war mir eine grosse und vor allem auch schnelle Hilfe!

      LG Miklos

      • Ninox Solution-Partner
      • RonaldP
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Miklos Toth Gerne, hat Spaß gemacht :-)

Content aside

  • Status Answered
  • vor 1 JahrZuletzt aktiv
  • 9Antworten
  • 185Ansichten
  • 2 Folge bereits