0

Wie kann ich einen Datensatz 'aktualisieren'?

Hallo zusammen,

ich bin wohl so sehr im Ninox-Tunnel, so dass ich die 'einfachsten' Dinge nicht mehr hinbekomme.

Vielleicht kann mir jemand bitte auf die Sprünge helfen.

Ich habe eine Tabelle Kunden und Tabelle Ansprechpartner ( <-- Verknüpfung von Kunden mit Ansprechpartner 1:N - ohne Komposition), die ich damals nach diesen Video erstellt habe.

https://www.youtube.com/watch?v=tNKPQxUILsk

Alles funkfioniert soweit gut.

Ich habe zusätzlich ein Button (nur ein Auszugdes Codes)

let myNr := Nr;
let myTel := Telefon;
let ap := (create Ansprechpartner);
ap.(Telefon := myTel);
ap.('Zu Kunde‘ := myNr);
ap.('Ansprechpartner aktiv' := true);
'Kundenkontakt bereits gespeichert?' := true

 

in Tabelle Kunden erstellt, um die Daten in Tabelle Ansprechpartner zu 'übertragen', auch da alles prima.

 

Nun möchte ich mit einem anderen Button erreichen, dass die Daten in Tabelle Kunden quasi in Tabelle Ansprechpartner' nur 'aktualisiert' werden, dh. wenn ich zB in einem Datensatz keine Telefonnummer habe und diese nachträglich eintrage, sollte diese dann mit Hilfe des Buttons in den jeweiligen Datensatz 'nachgetragen' werden.

Mit create wird ja ein neuer Datensatz erstellt.

Bin schon mal soweit, dass kein neuer Datensatz erstellt wird, jedoch wird die Telefonnummer in jedem Datensatz 'verändert'.

let ap := Nr;
Ansprechpartner.(Telefon := ap.Telefon)

 

Hat jeamnd eine Idee, was ich falsch gemacht habe, bzw. wie ich das erreiche?

Vielen Dank und Gruß Kruna

29 Antworten

null
    • Torsten_Stang.1
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Versuch' mal so:

    let ap := Nr;
    Ansprechpartner[not Telefon].(Telefon := ap.Telefon)
    
    • + Maßanzug statt Massenware +
    • RonaldP
    • vor 2 Jahren
    • Gemeldet - anzeigen
    Kruna said:
    jedoch wird die Telefonnummer in jedem Datensatz 'verändert'.

    Kannst du das noch genauer beschreiben? Ich verstehe das so, dass einunddieselbe Telefonnummer in alle Datensätze eingetragen wird?!

    Aus Faulheitsgründen würde ich das über einen Trigger nach Änderung im Telefon-Feld machen. Dann brauchst du keinen Button klicken. ;-)

    Wenn ich das richtig verstehe, müsste das doch bei einer Verknüpfung direkt so gehen:

    Ansprechpartner.Telefon := Kunden.Telefon

    VG Ronald

    • Heinrich Frey Maschinenbau GmbH
    • Christian_Rott
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Welche Telefonnummer willst du denn Aktualisieren ? Weil wenn ich das in Bastian Video richtig verstehe erstellt du zu dem Kunden ein Ansprechpartner.

    Ich habe das bei mir auch so ähnlich gemacht.

    In wenn ich nun im Ansprechpartner bei einem was ändert dann doch nur dort?

    Wenn sich beim Kunden die Telefonnummer ändert dann sollte es doch mit einem Trigger nach Änderung gehen. Wie Roland schon beschrieben hat.

    • + Maßanzug statt Massenware +
    • RonaldP
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Und wo ich so drüber nachdenke, brauchst du die Daten nicht zu kopieren, sondern ich mache das in so einem Fall mit einem FX-Feld in Ansprechpartner und zeige den Inhalt von Kunden.Telefon in Ansprechpartner nur an. Damit brauchst du auch keine Trigger Skript, sondern müßtest in dem create nur noch die Verknüpfung zuweisen...

    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Guten Morgen zusammen,

    ich danke Euch für eure Hilfe. Es tut mir leid, falls meine Frage noch mehr Fragen aufwirft.😅

    Ich kann die Problematik(en) manchmal schlecht beschreiben, deshalb eine kleine testDB.

    Der Button ist eher als 'Schi-Schi' gedacht, denn wenn ich in Tabelle Kunden zB die Telefonnumer ändere, dann kann ich auf die verknüpfte Tabelle klicken, die Tabelle Ansprechpartner öffnet sich und mit dem Button OK, werden die Änderungen übernommen.

    Nun möchte ich gerne diesen Schritt 'sparen' und erreichen, dass in Tabelle Kunden mit Hilfe des Buttons, die Daten gleich aktualisiert werden, ohne zuerst auf die Verknüpfung klicken zu müssen.

     

    Danke euch und einen schönen Tag.

     

    Gruß Kruna

      • Torsten_Stang.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna 

      ich hab meinen Code von oben gerade in Deiner Test-DB probiert - er schreibt die Telefonnummer des Kunden in alle Ansprechpartner, bei denen bisher noch keine Telefonnummer eingetragen ist. Das ist doch, was Du wolltest, oder?

      let my := this;
      Ansprechpartner[not Telefonnummer].(Telefonnummer := my.Telefonnummer)
      
    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten,

    es sollte nicht bei allen Aprechpartnern die Telefonnummer geändert werden, sondern nur bei dem Kunden, der gerade in Tabelle Kunde steht.

    zB sehe ich bei Kunde A als Ansprechpartner Herrn Müller und Herrn Schmitt. Beide haben eine andere Telefonnummer, weil zB andere Abteilung, Durchwahl oä.

    Nun zieht Müller in ein anderes Büro und seine Nummer/Durchwahl ist dann nicht mehr -102 sondern -103.

    Wenn ich Deinen Code eingebe, dann haben alle Ansprechpartner -103, es sollte aber nur bei Müller -103 stehen.

    Gruß Kruna

      • Torsten_Stang.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna 

      in Deiner Beispiel-DB ist jeder Datensatz aus 'Kunden' mit je einem Datensatz aus 'Ansprechpartner' verknüpft. Lt. Datenmodell hat der Kunde "Müller" genau einen Ansprechpartner "Müller" - wenn ich dem Kunden(!) einen zweiten Ansprechpartner hinzufüge 

      und bei dem die Telefonnummer leer lasse, würde mein Code die Telefonnummer aus der Tabelle 'Kunde' beim neuen Ansprechpartner platzieren. 

       

      Entweder hakt Dein Datenmodell - oder mein Verständnis dafür -  in jedem Fall tut der Code, was er soll.

    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten,

    wahrscheinlich hakt mein Datenmodell und mein Denken um unnötige Ecken. Vieleicht ist es ja auch gar nicht so umsetzbar, wie ich mir das vorstelle.

     

    Nehmen wir das Beipiel von dem Bild, welches Du gerade gepostet hast:

    Hans   Müller   tel:   2345

     

    Wenn ich nun auf den Button aktualisieren klicke, sollte bei Hans Müller (in der AnsprechpartnerTabelle) nicht 12122 stehen, sondern 2345 (unabhängig von Willi Wichtig, der kann ja eine ganz andere Telefonnummer haben.)

    Es geht nicht um neue Ansprechpartner, sondern schon um bestehende.

    Wie bereits beschrieben, erreiche ich das, in dem ich auf die Verknüpfung Hans Müller klicke, dann sich die Tabelle öffnet und ich auf OK klicke. Und genau diesen Schritt möchte ich mir 'ersparen'.

      • Torsten_Stang.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna Dein Ansatz macht für mich Nullkommanull Sinn - muss er aber auch nicht, ist ja Deine DB  ;-)

      let my := this;
      Ansprechpartner[Name = my.Name and Vorname = my.Vorname].(Telefonnummer := my.Telefonnummer)
      
      • Kruna
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Torsten Stang guten Morgen,

      könntest Du mir bitte noch einmal hierzu helfen? Wie schaut es denn aus, wenn ich Name und Vorname auch mit einbeziehen möchte? Ich habe ein wenig herumprobiert, aber leider ohne Erfolg.

      Zunächst hatte ich es mit

      let my := this;
      Ansprechpartner[Name = my.Name and Vorname = my.Vorname].(Vorname := my.Vorname)

      Ansprechpartner[Name = my.Name and Vorname = my.Vorname].(Nachname := my.Nachname)

      versucht, hatte nicht geklappt. Dann versuchte ich, Deinem Script 'zu folgen' und dachet mir

      zB:

      let my := this;
      Ansprechpartner['Straße' = my.'Straße' and Ort = my.Ort].(Vorname := my.Vorname);

      Ansprechpartner['Straße' = my.'Straße' and Ort = my.Ort].(Nachname := my.Nachname)

       

      hatte leider auch nichts gebracht. HAst Du eine Idee, wo der Fehler liegen kann?

      Vielen Dank schon mal.

       

      Gruß Kruna

      • Torsten_Stang.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna 

      am Code selbst fällt mir nichts auf - stimmen die Feldbezeichnungen? Gibt es jeweils auch Datensätze, die die Suchkriterien (exakt) erfüllen?

      • Kruna
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Torsten Stang ahhhh, jetzt ist der Groschen gefallen!! Dein entscheidender Hinweis war das Wort 'Suchkriterien (exakt)'. Nun habe ich den Code auch halbwegs verstanden und somit einen workaround geschaffen, indem ich zwei Zahlenfelder hinzugefügt habe, die sich bei jedem neuen Datensatz um 1 erhöhen, um somit das 'exakt' zu erfüllen.

      So kann in den Namen und Vornamen mit einbeziehen und es funktioniert wunderbar. :-)

      Vielen, tausend Dank!!

      Gruß kruna

    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    HAllo Tortsen,

     

    wie gesagt, wahrscheinlich macht es auch keinen Sinn, aber dass werde ich in der Praxis dann wahrscheinlich selbst auch bemerken. ;-)

    Jedenfalls ist es jetzt das Ziel erreicht und es ist so, wie ich es verucht habe zu erkären 😅

     

    Tausend Dank!!!!👍

    Gruß Kruna

      • Heinrich Frey Maschinenbau GmbH
      • Christian_Rott
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna Also ich bin ja der Meinung das du in der Checkbox einen Trigger nach Änderung noch einstellen solltest. Für den Ansprechpartner den du als aktiv setzt.

      Ich erziele das eben über die Checkbox wer gerade aktiv ist wird unten in der Tabelle AP rot angezeigt und ändert dann oben die Infobox.

      Gruß Christian 

      • Heinrich Frey Maschinenbau GmbH
      • Christian_Rott
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christian Rott 

      let ap := Nr;
      if 'Aktiver Ansprechpartner' then
          Kunden.Ansprechpartner[Nr != ap].('Aktiver Ansprechpartner' := false);
          Kunden.(Vorname := ap.Vorname);
          Kunden.(Nachname := ap.Nachname);
          Kunden.(Telefon := ap.Telefon);
          Kunden.(Mobil := ap.Mobil);
          Kunden.(Email := ap.Email);
          Kunden.(Anrede := ap.Anrede);
          Kunden.(Stellung := ap.Stellung);
          Kunden.(Strasse := ap.Strasse);
          Kunden.('Land (KÜRZEL 2 STELLEN)' := ap.Land);
          Kunden.(PLZ := ap.PLZ);
          Kunden.(Ort := ap.Ort)
      end
      
      • Rafael_Sanchis
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christian Rott Hi Christian nice to greet you.

      You have some little demo about this, appreciate. Thanks.

      • Heinrich Frey Maschinenbau GmbH
      • Christian_Rott
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Rafael Sanchis Hello Rafael, here is a little Demo

    • Kruna
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Christian,

    ja, das habe ich bereits umgesetzt. Ich hatte das nur nicht erwähnt, weil es eigentlich für den Button keine Relevanz hatte. Was ich allerdings nicht gemacht habe, aber eine super Idee ist, den aktiven Ansprechpartner farblich zu markieren. Wie hast Du das gemacht? Könntest Du mir das bitte erklären? Das würde ich gerne noch ergänzen.

    Rafael Sanchis Hi Rafael, here we go :-) I've added some fields and the respective codes, so you can adapt it to your db. Christian suggested to color the active contact (in his case its red). This is not included in the code, as I dont now exactly how to implement, so I asked Christian to explain how to accomplish.

      • Rafael_Sanchis
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna Excelent Krunaa lot of thanks

      • Heinrich Frey Maschinenbau GmbH
      • Christian_Rott
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna über Ansicht im AP bedingte Formatierung

      schau mal in der Demo DB nach 

      • Kruna
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christian Rott bin ich blind?! Ich sehe im AP nichts, was rot angezeigt wird. Ich hatte auch den Ansatz über bedingte Formatierung, wusste aber nicht was ich eintragen soll, evtl. 'if...then?

      • Heinrich Frey Maschinenbau GmbH
      • Christian_Rott
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna so habe ich es gemacht. Sorry war noch nicht in der Demo DB die ich euch gesendet hatte

       

       

       

       

       

       

       

      • Rafael_Sanchis
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Christian Rott Thanks Christian, is Conditional Formating excelent 👍

      • Heinrich Frey Maschinenbau GmbH
      • Christian_Rott
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kruna Hier mal die geänderte Version