Ankündigung

Einklappen
Keine Ankündigung bisher.

Kompletten Datensatz mit Unterdatensätzen kopieren

Einklappen
X

Kompletten Datensatz mit Unterdatensätzen kopieren

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

  • Kompletten Datensatz mit Unterdatensätzen kopieren

    Hallo zusammen,

    ich möchte einen Datensatz (News) mit allen Unterdatensätzen (Empfänger/Verteiler) kopieren.

    Das Kopieren des Elterndatensatzes funktioniert super mit Hilfe der Funktion:

    function copyRecord(p_oButton)
    {
    var oFup = p_oButton.oUp.oFup;
    oFup.recId ="-1";

    return true;
    }

    Allerdings werden die Kinddatensätze (also die Empfänger) nicht mitkopiert.

    Hat jemand ein nachvollziehbares ähnliches Beispiel, dass er hier Bereitstellen könnte.
    Am Besten als LAX-Datei.

    Ich komme hier einfach nicht weiter.

  • #2
    Warum über JavaScript? nicht nicht über Groovy?

    Kommentar


    • #3
      Hi KimThomas,

      mir erschien der Ansatz per Javascript am einfachsten. Führt mich aber nicht zum Ergebnis :-(

      Könntest Du mir eine Lösung des Problems per Groovy aufzeigen.. wäre echt super.

      Lg
      intrexxer

      Kommentar


      • #4
        Ich mache es immer wie folgt:
        1. Datensatz der kopiert werden soll, per boolean markieren
        2. Prozess definieren der auf Datensatz Änderung reagiert ; Filter auf Markierung setzen
        3. Datengruppen Aktion; Datensatz hinzufügen und den Datensatz Kopf kopieren. Ich schreibe die alte LID in ein Int Feld.
        4. per Groovy Aktion Kinder kopieren
        Code:
        //==========================================================================================================================
        //Autor:
        //Datum:
        //Beschreibung:
        //letzte Änderungen:
        //==========================================================================================================================
        // Systemconfig aufbauen
        l_conn             = g_dbConnections.systemConnection
        //==========================================================================================================================
        //Variablen definieren
        def LID         = g_record["123......"].value /* datafield (PK) (S) ID <integer> */
        def myDate      = g_record["123....."].value /* datafield (S) ÄnderungsDatum <datetime> */
        //==========================================================================================================================
        //Daten selektieren
        def newFKLID    = g_dbQuery.executeAndGetScalarValue(l_conn, "SELECT LID FROM <Name der Datengruppe Eltern> WHERE L_LIDALT = ?" )
            {
            setInt(1, LID)
            }
        int newLid         = 0
        
        def stmt = g_dbQuery.prepare(l_conn, "SELECT LID, FKLID, REF_79CA2B70 FROM <Name der Datengruppe Kinder> WHERE FKLID = ?")
        stmt.setInt(1, LID)
        
        def rs = stmt.executeQuery()
        //==========================================================================================================================
        // größte LID ermitteln
        def MaxLid = g_dbQuery.executeAndGetScalarValue(l_conn, "SELECT MAX(LID) FROM "<Name der Datengruppe Kinder>", 0)
        newLid = MaxLid + 1
        //==========================================================================================================================
        // Insert Statement für Kinder schreiben
        def stmtInsert = g_dbQuery.prepare(l_conn, "INSERT INTO <Name der Datengruppe Kinder>(LID, FKLID, REF_79CA2B70) VALUES (?,?,?)")
        
        rs.each
        {
            stmtInsert.setInt(1, newLid)
            stmtInsert.setInt(2, newFKLID)
            stmtInsert.setInt(3, it.value(3))
            stmtInsert.executeUpdate()
            newLid = newLid + 1;
        }
        //==========================================================================================================================
        rs.close()
        stmtInsert.close()
        5. erneute Datengruppen Aktion um Markierungsfeld auf false zu setzen.

        Kommentar


        • #5
          Vielen Dank für Deine Hilfe.

          Mit Deinem Beispiel habe ich es hinbekommen.

          Lg
          intrexxer

          Kommentar

          Lädt...
          X