0

Der Button soll einen neuen Datensatz anlegen

Hallo liebe Community. 

Hier ein neues Problem. Ich hoff auch hier auf Eure Hilfe. Was mache ich falsch? 

Ausgangslage:

Das hier ist mein Datenmodell

 Unter der Tabelle Leistungsnachweis befinden sich die Kopfdaten und in Details die einzelnen Positionen pro Datensatz Kunde. 

Erreichen möchte ich, dass per Klick auf den Button zu dem gleichen Leistungsnachweis-Datensatz ein neues leeres Detail-Formular angezeigt wird. 

Momentan passiert bei Klick folgendes:

Es wird ein neues Formular angezeigt (das ist auch prima). Nur ist nicht der vorherige Datensatz in dem dieses Detail erzeugt werden soll vorbelegt. Ich müsste es erst auswählen. 

 Und das hier ist der momentane Code:

create Details;
openTable("Details", "Details");
openRecord(openFullscreen(create Details))

 

Wäre super, wenn mir jemand helfen könnte. 

Viele Grüße, Jens

8 Antworten

null
    • Horst_Fertig
    • vor 8 Monaten
    • Gemeldet - anzeigen

    Servus !

    Ich denke mal, in einem wie in deinem Script erzeugten Datensatz hängt der etwas "in der Luft", da die Verbindung zur "Parent-Tabelle" (Leistungsnachweis) fehlt.

    Angenommen die Beziehung zwischen (Tabelle) "Details" und (Tabelle) "Leistungsnachweis" heißt ebenfalls "Leistungsnachweis", UND vorausgesetzt der Button für einen neuen Datensatz befindet sich in der Tabelle (im Formular) "Leistungsnachweis" (!), dann sollte das eigentlich funktionieren...

    let result := dialog("Neuen Detail-Datensatz anlegen...", "Möchten Sie jetzt einen NEUEN Datensatz anlegen?", ["Ja bitte", "Nein danke"]);
        if result = "Ja bitte" then
            let xID := this;
            let c := (create Details );
            c.(Leistungsnachweis := xID);
            c.(Datum := today());
            popupRecord(c)
        end
    

    Ob mit oder ohne die Nachfrage, ob ein neuer Datensatz gewünscht ist, ist natürlich reine Geschmackssache und kann auch weggelassen werden. Genauso das Setzen des aktuellen Datums (oder anderer Standardwerte).

    D.h. die fünf Zeilen (oder vier, ohne Datum) zwischen if... und end sollten es auch tun.

    HTH und Grüße

    HF

      • Jens_Waschwill
      • vor 8 Monaten
      • Gemeldet - anzeigen

      Horst Fertig Vielen Dank Horst. Allerdings macht das Script genau in Zeile 5 Stress. 

       

      Hast Du hierzu eine Idee? Der Button befindet sich im Formular der Untertabelle Details.

      Eigentlich ist die Struktur: Leistungsnachweis -> Details (Formular: Details).

      Grüße, Jens

      • Jens_Waschwill
      • vor 8 Monaten
      • Gemeldet - anzeigen

        Habe dir mal meine Datenbank angehangen. Wo es fast funktioniert ist, wenn ich Leistungsnachweis.Detailbereich verwende. Aber dann setzt er auch nicht den Datensatz innerhalb des bestehenden Datensatzes. 

      • Torsten_Stang.1
      • vor 8 Monaten
      • Gemeldet - anzeigen

       

      let result := dialog("Neuen Detail-Datensatz anlegen...", "Möchten Sie jetzt einen NEUEN Datensatz anlegen?", ["Ja bitte", "Nein danke"]);
          if result = "Ja bitte" then
              let xID := this;
              let c := (create Details );
              c.(Leistungsnachweis := xID.Leistungsnachweis);
              c.(Datum := today());
              popupRecord(c)
          end
      
      • Jens_Waschwill
      • vor 8 Monaten
      • Gemeldet - anzeigen

       Hervorragend. Vielen Dank dafür. Es funktioniert. 

      • Horst_Fertig
      • vor 8 Monaten
      • Gemeldet - anzeigen

       

      Servus und moin!

      Ah, der Button ist in der Untertabelle, bzw. Formular. Das ist was anderes. Dann funktioniert das let xID := this nicht, sondern Du musst den Namen der Beziehung zur Parent-Tabelle verwenden, in Deinem Fall also "Leistungsnachweis". Mit...

      let result := dialog("Neuen Detail-Datensatz anlegen...", "Möchten Sie jetzt einen NEUEN Datensatz anlegen?", ["Ja bitte", "Nein danke"]);
      if result = "Ja bitte" then
          let xID := Leistungsnachweis;
          let c := (create Details);
          c.(Leistungsnachweis = xID);
          c.(Datum := today());
          popupRecord(c)
      end
      

      wird dann ein neuer Datensatz angelegt (in dem Fall gleich mit dem heutigen Datum) und es sollte dann nach dem "popup.." etwa so ausschauen...

      Hilft das etwas weiter?  

      Grüße

      HF

      • Horst_Fertig
      • vor 8 Monaten
      • Gemeldet - anzeigen

       

      Servus und aha! So geht's also auch. Schon wieder was dazugelernt, danke! 

      Grüße

      HF

      • Jens_Waschwill
      • vor 8 Monaten
      • Gemeldet - anzeigen

       Hallo Horst. Ja, fast. allerdings sollte es dann im ausgewählten Datensatz gespeichert werden und kein neuer ohne Bezug angelegt werden. 
       

      Es funktioniert jetzt aber. Thorsten hatte hier eine wohl entscheidende Änderung vorgenommen. Nämlich xID.Leistungsnachweis. 
      Ich danke euch vielmals. 
      Vielleicht bin ich auch irgendwann mal so gut um es zurückgeben zu können  

      Have a Nice Day. 

Content aside

  • vor 8 MonatenZuletzt aktiv
  • 8Antworten
  • 74Ansichten
  • 3 Folge bereits