0

Datensätze reorganisieren

Hallo,

wie bekomm ich es hin das ich nummern zu bestimmten Datensätzen neu vergeben kann. Hintergrung ist: Ein Disponierter Kunde hat den Termin abgesagt. Das heist das alle zu dem Kunden gehörenden Daten gelöscht werden. Um aber die Tourdaten (Geld, Planzeit, Adresangaben für Maps..) wieder in einklang zu bringen , müssen die entsprechenden werte von allen Kunden für den Tag und diese Tour auf null gesetzt werden. Das ist der erste Schritt. Beim 2. wird der Datensatz gelöscht. Jetzt kommt der Punkt wo es hakt.   Um die Daten für Google maps vernünftig anzuzeigen, werden beim Disponieren über “cnt” nummern vergeben (1. Kunde , 2.Kunde ... ) über diese Angabe werden die Adressdaten in einer anderen Tabelle geschrieben und dementsprchend in maps mit Labels versehen.

Das Datum der Tour befindet sich in Planung (Auslieferdatum) , Die reinen Daten für alle Kunden die Disponiert wurden (Adresse, was, wer, wann..) sind in Disponiert, Die übergabe der Daten für eine Tour ist in Tabelle Tour x 

erzeugen tu ich die nummer einfach über :  let pos := cnt((select “Disponiert ” where Auslieferdatum = Lieferdatum and Tour = “XX”).Lieferdatum);
new.(“Nummer für Maps” := pos)

Da wird ja nur der neue Datensatz dazugezählt. Doch wie geht das für die bestehenden Datensätze wenn die “Nummer für Maps” alle leer sind ???

5 Antworten

null
    • Michi.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ach so ich gehe von Planung (mit dem Auslieferdatum) über eine Ansicht auf den zu löschenden Kunden. Das Auslieferdatum ist vom Löschen nicht berührt. Bleibt also als bezug. Das löschen geschieht über einen Button in Disponiert

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Zub,

    musst Du die Datensätze denn tatsächlich löschen? Kannst Du nicht vielleicht den Kunden umbenennen in STORNIERT? Ich verstehe noch nicht genau dein Anliegen. Nutzt Du denn für deine Berechnungen die ID bzw. Nr eines Datensatzes? Dieser bleibt nämlcih bestehen und ist eigentlich nur eine interne ID für Ninox. Ich würde immer zusätzlich eine Zahl vergeben welche Du auch bearbeiten kannst - Kundennummer, Tournummer usw.

    • Michi.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ich kann ihn natürlich als Storniert markieren. Jedoch muss ich die daten wie Planzeit, Geld .. und Nummer für Maps aus der berechnung für die zugrunde liegende Tour nehmen, und dann die daten neu einlesen.

     

    Die Daten werden in Disponiert geschrieben ebneso wie Planzeit und Geld. Die Nummer für Maps ist ein Zahlenfeld und wird einfach beim disponieren über cnt vergeben. 

    (in der Tabelle Pool sind die einzelnen Aufträge / diese werden über die Tabelle Planung aufgerufen und weiter bearbeitet. Dabei wird die Tour, das Auslieferdatum, Planzeit ect. bestimmt. / Beim Disponieren wird alles zusammengefasst und in Disponiert geschrieben. / um die einzelnen Tage einer Tour abzubilden werden bestimmte Daten in die Tabelle Tour überführt. (Adresse in abhängigkeit der Nummer für Maps , Planzeit , Geld , ...) 

    Diese werden für den Betreffenden Tag beim Löschen des kunden ebenfalls gelöscht. Dann wieder neu eingelesen. Die Nummernvergabe für Maps hab ich jetzt auch gelöst über :

    let nn := 0;
    for i in (select “Disponiert Friedrichshain”)[Datum = Lieferdatum and “Position Hilfsfeld” = null] order by Lieferdatum do
    nn := nn + 1;
    i.(“Position Hilfsfeld” := nn)

    Jetzt hab ich nur noch ein Problem. Ich muss von der Tabelle Planung.Auslieferdatum den bezug auf Datum in der for Schleife herstellen. Hast du eventuell ne Ahnung? befinde mich ja in der Tabelle Disponiert beim Auslösen des Skripts  

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hol dir die benötigten Werte vorher in die Formel mit “let”, dann kannst Du damit arbeiten. 

    let nn := 0;

    let myDatum := Planung.Auslieferdatum;

    for i in (select “Disponiert Friedrichshain”)[myDatum = Lieferdatum and “Position Hilfsfeld” = null] order by Lieferdatum do
    nn := nn + 1;
    i.(“Position Hilfsfeld” := nn)

    Ich weiß jetzt nicht, ob das für dein Beispiel funktioniert, aber das Prinzip sollte klar sein :)

    • Michi.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Danke dir,

    aber dein ansatz den Kunden drinnen zu lassen, ist noch besser.  Das cnt beim Disponieren raus, dafür order by mit bedinungen rein und schon geht das. den rest macht das skript eh schon. Spart viel arbeit.

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 5Antworten
  • 438Ansichten