Ankündigung

Einklappen
Keine Ankündigung bisher.

Frei gestaltete Tabelle per Drag&Drop Anpassen und automatisch neu nummerieren

Einklappen
X

Frei gestaltete Tabelle per Drag&Drop Anpassen und automatisch neu nummerieren

Einklappen
  • Filter
  • Zeit
Alles löschen
neue Beiträge

  • Frei gestaltete Tabelle per Drag&Drop Anpassen und automatisch neu nummerieren

    Hallo zusammen,

    habe ein paar Herausforderungen, die vielleicht schon von einigen umgesetzt wurden.
    Da ich aber noch nicht sehr lange mit Intrexx arbeite und meine Programmierkenntnisse sich eher auf dem Bastlerniveau befinden, wende ich mich an euch.
    Meine Herausforderung ist aktuell, dass ich eine frei gestaltete Tabelle habe und in dieser Tabelle werden Prüfschritte erstellt, die dem Prüfer zur Verfügung gestellt werden.
    1. Es kommt vor, dass sich ein Prüfschritt ändert oder angepasst wird. Zur Dokumentation muss der alte archiviert, ausgetauscht und neu erstellt werden. Hierfür hätte ich gerne eine Funktion, die den ganzen Datensatz kopiert, zur Bearbeitung sichtbar macht und den alten archiviert.
    2. Die nächste Herausforderung ist, dass sich Prüfschritte in der Reihenfolge verändern.Da würde ich gerne per Drag&Drop die Listenposition verschieben und danach automatisch neu nummerieren und sortieren lassen.
    Hoffentlich könnt ihr mir weiterhelfen und eine einfache und schnelle Lösung anbieten.
    Vielen Dank

    Gruß Markus

  • #2
    Zu 1
    Falls es nur ein Datensatz ist, dann geht es womöglich mit copyRecord(this); (benutze ich derzeit nicht) oder per Manimuplation des Bindings (Read- und Write-Container auf Bearbeiten-Seite trennen und neue GUID einsetzen; nutze ich). Falls Kinddatensätze existieren per CopyID und Prozess (nutze ich auch).

    Zu 2
    Kann da nicht die Basiskontrolle "Sortierbare Liste" helfen?

    Kommentar


    • #3
      zu1 ) so was mache ich immer per velocity. Wenn nicht zu viele Felder in einer Tabelle sind ist das auch schnell hingeschrieben.
      zu 2) j das geht mit sortierbare Liste ganz gut. So was nutze ich immer um z.B. eine Liste mit Aufgaben neu zu sortieren (per Drag&Drop)

      Kommentar


      • #4
        Zitat von reiner.fuest Beitrag anzeigen
        Zu 1
        ... oder per Manimuplation des Bindings (Read- und Write-Container auf Bearbeiten-Seite trennen und neue GUID einsetzen; nutze ich).
        Da ich mich damit noch nicht beschäftigt habe, wie ist das genau gemeint? Gibt es dazu ein Beispiel oder gar eine Beispiel-App?

        Kommentar


        • #5
          Es geht darum, beim Bearbeiten eines Datensatzen ihm eine neue GUID unterzujubeln. Das kann an verschiedenen Stellen (Schaltfläche, Seiten-Parameter, Datenfeld-Vorbelegung) mit verschiedenen Methoden passieren (Velocity im Parameter, Velocity im Binding).

          Meine Beispiel-App ( Kopieren-Binding-Test.zip ) ist wirklich als Beispiel-App zu verstehen. Ich habe den Eindruck, dass sie funktioniert. Ob das alles nach UP-Lehrbuch gebaut ist, ist eine andere Frage.

          In dem Beispiel habe ich versucht, mit nur einer Eingabeseite auszukommen. Es kann auch Gründe geben, das anders zu machen.

          In Worte gefasst:
          • Kopieren-Schaltfläche belegt den Parameter NewGUID mit einer neuen GUID.
          • Bearbeiten Schaltfläche belegt den Parameter NewGUID mit der aktuellen STRID des Datensatzes.
          • Die Bearbeitenseite liest im Read-Container die Feldinhalte anhand der STRID des aufrufenden Datensatzes.
          • Der Write-Container schreibt in einen Datensatz mit der ID von NewGUID (Filterkriterien), die im Kopierfall eine neue ist, im Bearbeiten-Fall die alte.
          P.S.: falls jemand das Vorgehen kritisch sieht, bitte Bescheid sagen. Zur Not gewöhne ich es mir auch wieder ab.

          Kommentar


          • #6
            Zu Punkt 1, Datesatz mit Kinddaten kopieren, habe ich im Forum eine Beitrag gefunden, welchen ich bei uns in angepasster Form einsetze.
            https://community.intrexx.com/intrex...4tzen-kopieren

            Das Kopieren kommt ganz ohne Programmieren aus.

            ...

            Angeregt durch das Intrexx-Forum wurde folgende Lösung ganz ohne Script umgesetzt.

            Folgende Datenfelder sind zum steuern über Prozesse notwendig

            Eltern DG:
            Chekfeld "kopieren"
            Bei LID Int-Feld --> Int-Feld "Copy_ID"
            Bei GUID als ID --> short-Text "Copy_ID

            Kind DG:
            Bei FK(LID)als Int-Feld --> Int-Feld "Copy_ID_Kind"
            Bei FK(LID) GUID als ID --> short-Text "Copy_ID

            Die Kopierfunktion wird über Prozesse gesteuert.

            Wenn der Elterndatensatz kopiert werden soll, muss das Checkfeld "kopieren" aktiviert und der Datensatz gespeichert werden.

            1. Prozess Quell-Datensatz
            Kopiert den Elterndatensatz und schreibet die LID aus der Quelle in das Feld Copy_ID im neuen Datensatz

            Datengruppen-Ereignisbehandler, (Auf das erste Ereignis und auf Folgeereignisse reagieren)
            Datengruppe auswählen Datensatz ändern ("Folgeereignis" aktiviern) --> OK

            Filterbedingung hinzufügen (Bedingung: Checkfeld "kopieren" = wahr)

            Datengruppen-Aktion --> Datensatz hinzufügen, Folgeereignis aktivieren
            Zieldatengruppe = Quelldatengruppe
            Feldzuordnung:
            Hier alle Datenfelder zuordnen, die kopiert werden sollen.
            Nicht das Checkfeld "kopieren" zuordnen
            (PK)(S)ID (aus Quelle) --> auf CopyID (Ziel) zuordnen

            Folgeereignis anlegen
            Datengruppen-Aktion --> Datensatz ändern
            Zieldatengruppe = Quelldatengruppe
            Feldzuordnung:
            Checkfeld kopieren <-- false
            Copy_ID <-- NULL

            2. Prozess Temp Ziel-Datensatz (Ziel-DS) (Eltern)
            Schreibt den Wert (PK)(S)ID in die Felder "Copy_ID_Kind" der Kinddaten des Quell-DS
            (Die eigenen Kinddaten des neu erstellten Datensatzes (Ziel-DS) werden im 3. Prozess erzeugt)

            Datengruppen-Ereignisbehandler, (Auf das erste Ereignis und auf Folgeereignisse reagieren)
            Datengruppe (Eltern) auswählen ("Einfügen" aktiviern) --> OK

            Filterbedingung hinzufügen (Bedingung:Copy_ID = definiert)

            Datengruppen-Aktion --> Datensatz ändern, Folgeereignis aktivieren
            Zieldatengruppe = Kinddatengruppe
            Manipulationsmenge:
            Zieldatengruppe (Kind): Datenfeld: (FK)(S) FKLID <integer>
            gleich
            Quelldatengruppe (Eltern): Datenfeld: Copy_ID<integer>
            Feldzuordnung:
            Ziel: Quelle
            Copy_ID_Kind <-- (PK)(S)ID

            Folgeereignis anlegen
            Datengruppen-Aktion --> Datensatz ändern
            Zieldatengruppe (Eltern)
            Zieldatengruppe = Quelldatengruppe
            Manipulationsmenge: (hier nichts ändern) Ziel (PK)(S)ID<integer>=Quelle (PK)(S)ID<integer>
            Feldzuordnung:
            Ziel: Copy_ID <NULL>

            3. Prozess
            Kinddaten kopieren und dem neuen Datensatz zuordnen

            Datengruppen-Ereignisbehandler, (Auf das erste Ereignis und auf Folgeereignisse reagieren)
            Kind-Datengruppe auswählen ("Ändern" aktiviern) --> OK

            Filterbedingung hinzufügen (Bedingung:Copy_ID_Kind = definiert)

            Datengruppen-Aktion --> Datensatz hinzufügen, Folgeereignis aktivieren
            Zieldatengruppe = Quelldatengruppe (Kinddatengruppe)
            Feldzuordnung:
            Ziel Quelle
            (FK)(S)FKLID <-- Copy_ID_Kind
            Copy_ID_Kind <-- hier nichts zuordnen
            alle anderen benötigten Felder zuordnen


            Folgeereignis anlegen
            Datengruppen-Aktion --> Datensatz ändern
            Zieldatengruppe = Quelldatengruppe (Kinddatengruppe)
            Manipulationsmenge: (hier nichts ändern) Ziel (PK)(S)ID<integer>=Quelle (PK)(S)ID<integer>
            Feldzuordnung:
            Ziel: Copy_ID_Kind <-- <NULL> (Feld leeren)


            Um den "alten" Datensatz zu archivieren, würde ich ein zusätzliches Checkfeld anlegen und dieses bei den Kopierprozessen (1.Prozess) aktivieren.

            Gruß Gerald
            Angehängte Dateien

            Kommentar


            • #7
              Hallo an alle,

              vielen Dank an alle, für eure Hilfe.


              Die sortierbare Liste hat super geklappt und
              mit dem Beispiel von Gerald habe ich mein Problem perfekt beheben können.


              Gruß Markus

              Kommentar


              • #8
                Hallo zusammen,
                die Lösung von Gerald ist super! Die hat mir sehr geholfen, danke Gerald

                Um alles zu verstehen, habe ich die App mit den Prozessen für mich nachgebaut und noch ein bisschen mehr gemacht:
                • meherere Kind-Datengruppen (in meinem Fall zwei)
                • Auswahl, welche der Kind-Datengruppen mit kopiert werden sollen
                Anbei die App mit Prozessen für die Intrexx Versionen 19.03 und 21.03.

                Viel Spass damit ...
                Grüße Frank
                Angehängte Dateien

                Kommentar

                Lädt...
                X