0

Hilfe für Ansicht

Hallo,

ich möchte folgendes erreichen, wenn dieses möglich ist.

In einem Feld stehen Werte mit Komma getrennt. In der Ansicht sollen alle Datensätze angezeigt werden, die mindestens einem Werten im Suchfeld entsprechen.   

Ich bedanke mich für eure Hilfe

Alex

7 Antworten

null
    • Heinrich Frey Maschinenbau GmbH
    • Christian_Rott
    • vor 8 Monaten
    • Gemeldet - anzeigen

    Dazu müßte man noch etwas mehr zu der Datenstruktur wissen.

    Wie und was soll wo angezeigt werden. Das wäre hilfreich

      • Firmeninhaber eines Dienstleistungsunternehmens (SHK)
      • Alexander_Prochnow
      • vor 8 Monaten
      • Gemeldet - anzeigen

       

      Habe das Feld Re-Nummer, in dem die Rechnungsnummern bei Zahlungseingang kommasepariert eingetragen werden. Dann habe ich die Ansicht, in der alle Rechnungen zu den Rechnungsnummern angezeigt werden sollen. Ich habe dieses jetzt mal mit dem Code so weit hinbekommen, jedoch wird es wohl noch eine bessere oder einfachere Codevariante geben, denke ich. Hier der Code in der Ansicht.

      let myRE := item(split('Re-Nummer', ", "), 0);
      let myRE1 := item(split('Re-Nummer', ", "), 1);
      let myRE2 := item(split('Re-Nummer', ", "), 2);
      let myRE3 := item(split('Re-Nummer', ", "), 3);
      let myRE4 := item(split('Re-Nummer', ", "), 4);
      let myRE5 := item(split('Re-Nummer', ", "), 5);
      let myRE6 := item(split('Re-Nummer', ", "), 6);
      let myRE7 := item(split('Re-Nummer', ", "), 7);
      let myRE8 := item(split('Re-Nummer', ", "), 8);
      let myRE9 := item(split('Re-Nummer', ", "), 9);
      let myRE10 := item(split('Re-Nummer', ", "), 10);
      let myRE11 := item(split('Re-Nummer', ", "), 11);
      let myRE12 := item(split('Re-Nummer', ", "), 12);
      select Buchungen
          where 'Re-Nummer' = myRE or 'Re-Nummer' = myRE1 or 'Re-Nummer' = myRE2 or
                                              'Re-Nummer' = myRE3 or
                                          'Re-Nummer' = myRE4 or
                                      'Re-Nummer' = myRE5 or
                                  'Re-Nummer' = myRE6 or
                              'Re-Nummer' = myRE7 or
                          'Re-Nummer' = myRE8 or
                      'Re-Nummer' = myRE9 or
                  'Re-Nummer' = myRE10 or
              'Re-Nummer' = myRE11 or
          'Re-Nummer' = myRE12
      
      • Ninox-Professional
      • planoxpro
      • vor 8 Monaten
      • Gemeldet - anzeigen

       

      Hallo Alexander, versuch‘s mal so:

      let myR := split(‘Re-Nummer‘, ",");
      for i in myR do
         first(select Buchungen where 'Re-Nummer' = trim(i))
      end
      • Ninox-Professional
      • planoxpro
      • vor 8 Monaten
      • Gemeldet - anzeigen

      Nachtrag: 

      Die Performance ließe sich wahrscheinlich durch eine zusätzliche Vorab-Filterung noch verbessern. Dann müssten beim „select“ nicht immer alle Datensätze in ‚Buchungen‘ durchsucht werden - da kann über die Jahre ja einiges zusammenkommen -, sondern von vornherein nur eine kleine Teilmenge.

      Beispiel: Angenommen, die Datensätze in ‚Buchungen‘ hätten ein Ja/Nein-Feld namens „Bezahlt“. Und es sollen bei der Abfrage nur unbezahlte berücksichtigt werden. Dann könnte man die relevante Teilmenge der ‚Buchungen‘ in ein Array packen und dann dieses zum Abgleich heranziehen:

      let myRe := split('Re-Nummer', ",");
      let myArray := (select Buchungen where not Bezahlt);
      for i in myRe do
         first(myArray['Re-Nummer' = trim(i)])
      end

      Bei ein paar hundert Datensätzen wird es vermutlich keinen spürbaren Unterschied machen, bei ein paar tausend möglicherweise schon.

      • Firmeninhaber eines Dienstleistungsunternehmens (SHK)
      • Alexander_Prochnow
      • vor 8 Monaten
      • Gemeldet - anzeigen

      Vielen lieben Dank. Mit einer Schleife wollte ich es auch machen, aber ich bekomme das einfach nicht hin. Da fehlen mir schlichtweg die Kenntnisse bzw. das Verständnis.

    • Firmeninhaber eines Dienstleistungsunternehmens (SHK)
    • Alexander_Prochnow
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Hallo,

    bin mal wieder am Basteln und komme so gar nicht voran.

    Für die Schleifen bin ich ganz einfach zu doof.... 

    Aufbauend auf dem Skript von planox wollte ich versuchen, die Datensätze, die in der Ansicht erscheinen, noch mit dem Datensatz zu verbinden. In der Tabelle habe ich dazu nochmals ein Verknüpfungsfeld, in dem dann die entsprechenden Datensätze miteinander verbunden werden sollen. Viel versucht, was so meine Gedankenwelt zulässt.

     

    let myRechnungsnummer := split(text('Re-Nummer'), ",");
    for i in myRechnungsnummer do
        let myRE := trim(i);
        for Y in select Buchungen where 'Re-Nummer' = myRE do
            Y.(
                let myDS := first((select Buchungen)['Re-Nummer' = myRE].number(Nr));
                Zahlung_Verbindung := myDS
            )
        end
    end
    
      • Firmeninhaber eines Dienstleistungsunternehmens (SHK)
      • Alexander_Prochnow
      • vor 3 Monaten
      • Gemeldet - anzeigen

      tja. Nach stundenlangem probieren und testen und dem Schrei nach Hilfe, fallen einem die Schuppen von den Augen. Ich habe es jetzt hinbekommen.

      Ist mit Sicherheit noch ausbaufähig.

      let myRechnungsnummer := split(text('Re-Nummer'), ",");
      for i in myRechnungsnummer do
          let myRE := trim(i);
          for Y in select Buchungen where 'Re-Nummer' = myRE do
              let meDS := this;
              Y.(Zahlung_Verbindung := meDS)
          end
      end
      

Content aside

  • vor 3 MonatenZuletzt aktiv
  • 7Antworten
  • 58Ansichten
  • 3 Folge bereits