0

Datensätze in Tabelle Vergleichen

Hallo zusammen, 

ich komme bei folgender Problematik nicht weiter: 

Ich habe eine Tabelle mit Einträgen folgender Nummerierung / Systematik (Zahlenfeld) : 

Hauptpositionen: 0001, 0002, 0003, etc. und die dazugehörigen Unterpositionen

Unterpositionen: 0001.0001, 0001.0002, 0001.0003, etc. 
                               0002.0001, 0002.0002, 0002.0003, etc.

Die Einträge sehen in der Tabelle untereinander. 

In den Hauptpositionen kann ich ein Feld (Ja/Nein) mit"zusammenrechen" auswählen. --> zusammenrechnen = Ja / zusammenrechnen = nein

 

Folgende Problematik:
Wenn ich "zusammenrechnen" = Ja wähle, sollen sämtliche passenden Unterpositionen automatisch gekennzeichnet werden: z.B. ein "A" in einem Textfeld / oder ein "Ja" in eine Ja/Nein-Feld, o.ä.

Bsp.: 

Wenn bei Hauptposition 0001 zusammenrechnen=ja dann Textfeld = A, soll für sämtliche zugehörigen Unterpositionen --> 0001.0001 = A, 0001.0002 = A, etc. geschrieben werden. 

Es müssten also irgendwie einzelne Einträge miteinander verglichen werden. Geht das?

 

Grüße

Alex

4 Antworten

null
    • Torsten_Stang.1
    • vor 1 Jahr
    • Gemeldet - anzeigen

    das Feld 'Position' ist tatsächlich ein Zahlenfeld? "0001.0001" würde für mich eher auf ein Textfeld schließen lassen. Dann könnte im folgenden Code das text() jeweils entfallen...

    Mit

    let my := this;
    select(TABELLE where cnt(split(text(Position),"."))>1 and item(split(text(Position),"."),0)=my.text(Position))

    solltest Du alle zugehörigen Unterpositionen selektieren können.

    Ergo würde

    let my := this;
    for i in select(TABELLE where cnt(split(text(Position),"."))>1 and item(split(text(Position),"."),0)=my.text(Position)) do
    i.Textfeld := "A"
    end

    Dein Ziel erreichen.

      • Torsten_Stang.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Torsten Stang 

      was mir im Nachhinein einfällt: Mein Skript setzt voraus, dass die Positionsbezeichnungen global einmalig sind. Das wird allerdings in der Praxis eher nicht so sein. Davon ausgehend, dass die Tabelle mit den Positionen eine Untertabelle von z.B. 'Auftrag' ist, wäre die select()-Anweisung jeweils wie folgt zu ersetzen:

      my.Auftrag.TABELLE[cnt(split(text(Position),"."))>1 and item(split(text(Position),"."),0)=my.text(Position))]
      
    • Ninox-Professional
    • planoxpro
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo, man könnte das mit einem Änderungstrigger im Ja/Nein-Feld machen:

    if zusammenrechnen = true then
        let me := this;
        (select Positionentabelle where substr(PosNr, 0, 4) = me.PosNr and number(Nr) != me.number(Nr)).(MeinTextfeld := "A")
    end
    

    Wobei ich bei der Positionsnummer (PosNr) davon ausgegangen bin, dass sie ein Textfeld ist, kein numerisches.
     

    • Ninox-Professional
    • planoxpro
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Ups. Na ja, doppelt gemoppelt hält besser ... ;)

Content aside

  • vor 1 JahrZuletzt aktiv
  • 4Antworten
  • 76Ansichten
  • 3 Folge bereits