0

Sortierung

Ich benötige wieder Eure Unterstützung.

In meiner Tabelle wird für jeden neuen Datensatz automatisch eine Nr. vergeben ('Buchung-Nr' := max((select '1.Heidi').'Buchung-Nr') + 1). Es kann nun vorkommen, dass ein Datensatz zwischen bereits bestehenden eingefügt wird und daher die Nummernreihenfolge nicht korrekt ist. Kann man die Nummern auf eine einfache Weise neu vergeben? ZB Befehlsschaltfläche oder besser währe automatisch.

Danke für die Hilfe

Rudi

11 Antworten

null
    • Rudolf_Schabl
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Vielen Dank für die Antwort. Ich denke ich habe nicht genau beschrieben was ich möchte. Die Tabelle ist nach Datum sortiert und es kann vorkommen, dass ich eine Buchung nachträglich einfügen muss. Nun sollen die fortlaufenden Nr. in der Spalte "Buchung-Nr" neu vergeben werden.

    lg

    Rudi

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Rudi,

    genu das tut diese Formel. Die Formel gehört in einen Button und der Button ist in der Tabelle Buchungen.  Wenn du in einer Buchnung mit der Nummer 136 bist auf den Button klickst, werden alle Buchungen ab 136 nach unten rutchen und die Neue Buchung erhält die Nummer 136.

    Leo

    • Rudolf_Schabl
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Danke für deine Unterstützung, leider funktioniert es nicht. 

    Trozdem vielen Dank für deine Bemühung

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Und was genau funktioniert da nicht, wenn ich fragen darf?

    • Rudolf_Schabl
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Es erstellt einen neuen Datensatz ändert aber nicht die Nummern. Möglicherweise ist es einfacher mit der Massendatenänderung und nummeriert alle Zeilen neu. So bekommt der eingefügte Datensatz auch die Nummer welche er haben soll (die Tabelle ist wie bereits gesagt nach Datum sortiert). Leiter kenne ich den Befehl für eine Durchnummerierung nicht.

    lg

    Rudi

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Rudi,

    entwerder reden wir über verschiedenen Dinge oder .... ich weiß auch nicht. Dass die Tabelle Nach datum sortiert ist spielt meiner Meinung nach keine Rolle wenn du noch die Buchungsnummer hast. Wonach sortierst du die Datensätze von den gleichen Datum? Die Formel, angepasst an deine Tabelle, wäre:

    ----

    let newN := this.'Buchung-Nr'+ 1;
    (select '1.Heidi')['Buchung-Nr' >= newN].('Buchung-Nr' := 'Buchung-Nr' + 1);
    let newR := (create '1.Heidi');
    newR.('Buchung-Nr' := newN);
    popupRecord(newR)

    ---

     

    Leo

    • Rudolf_Schabl
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ich denke wir reden aneinander vorbei. Sortiert wird die Tabelle nach Datum. Es gibt aber an einem Tag mehrere Buchungen (daher ist der Saldo in dieser Zeile nicht korrekt) und wie bereits erwähnt kann es vorkommen, dass eine Buchung eingetragen wird, die ein früheres Datum hat. Daher kann ich den geauen Saldo nicht berechnen. Für die Berechnung des genauen Saldos dachte ich, wenn die Buchungs-Nr. neu vergeben werden, kann man den Saldo mit der Buchungs Nr. berechnen. So sollte der Saldo in jeder Zeile korrekt sein. 

    lg

    Rudi

    • Rudolf_Schabl
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo
    Als erstes möchte ich mich für deine Unterstützung herzlich bedanken.
    Bezugnehmend auf unsere letzte Unterhaltung ist es mir ein Bedürfnis mein Anliegen nochmals genau zu erklären.
    In einer korrekt geführten Buchhaltung muss der Saldo in jeder Buchungszeile genau errechnet sein und muss sich bei Eingabe einer neuen Buchung dementsprechend ändern. Du warst so nett und hast mir die Formel zur Errechnung des Tagessaldos geschrieben
    (let myDate := Datum;
    sum((select '1.Heidi')[Datum <= myDate].(Eingang - Ausgang)).
    Nun sind an einem Tag mehrere Buchungen und daher sollte sich der Saldo, pro Zeile, dementsprechend verändern. Wie bereits erwähnt vergäbe ich jeder Buchung eine Nr. ('Buchung-Nr' := max((select '1.Heidi').'Buchung-Nr') + 1). Die Nummer hat keine Aufgabe für die Buchhaltung und ist daher veränderbar. Wenn eine Buchung nachträglich zwischen bereits gebuchten Zeilen eingefügt wird sollen die nachfolgenden Salden sich dementsprechend verändern.
    Mein Gedanke war daher folgender:
    1.    Die Möglichkeit die Buchungs-Nr. neu zu vergeben (Die Spalte neu zu nummerieren von 1 bis….)
    2.    Nach der neuen Nummerierung anstelle des Datums zur Berechnung des Saldos die Buchungs-Nr. zu verwenden.
    let myBuch := Buchung-Nr;
    sum((select '1.Heidi')[Buchung-Nr <= myBuch].(Eingang - Ausgang)
    Daher wollte ich eine Formel mit der ich die gesamte Spalte Buchung-Nr. neu nummerieren kann. (Massendatenänderung oder mit einer Befehlsschaltfläche).

    Danke nochmals für deine Hilfe
    Rudi

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Rudi,

    geh bitte in die Tabelle  '1.Heidi' rein und füge eine Befehlsschaltfläche hinzu. Als Name schreibst du "Neue Buchnug an dieser Stelle" . Als Formel schreibst du;

    ---

    let newN := this.'Buchung-Nr';
    (select '1.Heidi')['Buchung-Nr' >= newN].('Buchung-Nr' := 'Buchung-Nr' + 1);
    let newR := (create '1.Heidi');
    newR.('Buchung-Nr' := newN);
    openRecord(newR)

    ---

    Wenn du eine Buchung zwischen 'Buchung-Nr'=100 und 'Buchung-Nr'=101 schreiben muss, dann gehst du in die Buchung mit der Nummer 101und klickst auf den Button  "Neue Buchnug an dieser Stelle". Ninox gibt dem neuen Datensatz die Nummer 101 und verschibt die Nummerirung aller untenliegenden Datensätze um eine Nummer nach unten (101->102,102->103 usw.) Das ist genau das was du möchtest oder?

     

    Leo

    • Rudolf_Schabl
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Jetzt hab ich es kapiert. Es funktioniert super. Ich denke, dass ich schön langsam aber sicher alt werde und länger brauche um etwas zu verstehen. 

    Danke nochmals und entschuldige mein lagsames Denken

    lg

    Rudi

Content aside

  • vor 5 JahrenZuletzt aktiv
  • 11Antworten
  • 3309Ansichten