0

Aagrrrr - dat Eckige will nicht in das Runde

Ahoi in die Runde!

Es gibt eine Datenbank Vorgänge. Diese Tabelle ist verknüpft mit Projekte - meiner Mutter aller Daten.

Ein Auswahlfeld fragt, welches Projekt und die Antwort wird in das Feld "zugehöriges Projekt" geschrieben.

Vorgänge erfasse ich auch außerhalb von Ninox und trage dort die Projektnummer als Text ein z.B. 2025-0003. Das importiere ich dann via csv in die Vorgänge.

Das wird in das Feld PNR-Vorbereitung importiert. Jetzt will ich "zu Fuß" über Massenbearbeitung die Daten aus PNR-Vorbereitung nutzen, um das Feld "zugehöriges Projekt" zu befüllen. Das will ich über ein Formelfeld machen, und dann sagen: "liebes Massenbearbeitungsdings, bitte mach zugehöriges Projekt = Formelfeld"...

Ich mach das in dem Formelfeld so:

let a := this;
let b := this.'PNR-Vorbereitung';
let c := first(select Projekte where PNR = b);
c

Was sehe ich dann? NIX - rabääääh

Ich bin für jeden Tip dankbar. Schöne Pfingsten allerseits, Frank

5 Antworten

null
    • mirko3
    • vor 8 Tagen
    • Gemeldet - anzeigen

    Hallo Frank. Existiert das zugehörige Projekt schon? Denn sonst kann auch keine Zuweisung stattfinden. Wenn es schon existiert, dann prüfe bitte das Ergebnis der Variable c in einem Funktionsfeld, ob es ein Ergebnis wirft. Nutze vielleicht debugValueInfo() um das Ergebnis zu debuggen. Ansonsten habe ich kurz dein Szenario nachgestellt und es funktioniert bei mir. Mirko

      • Rechtsanwalt
      • Frank_DIPO2
      • vor 6 Tagen
      • Gemeldet - anzeigen

       ja, es werden nur Projektnr abgefragt, die schon existieren

      • Rechtsanwalt
      • Frank_DIPO2
      • vor 6 Tagen
      • Gemeldet - anzeigen

       Hallo Mirko, jetzt die ganze Antwort

      Ja, es werden nur Projektnr abgefragt, die schon existieren. Ein Formelfeld mit der Formel

      let a := this;
      let b := this.'PNR-Vorbereitung';
      let c := first(select Projekte where PNR = b);
      debugValueInfo(c)

      liefert:

      nid(undefined)

      Formel:

      let a := this;
      let b := this.'PNR-Datenbankverwendung';
      let c :=(select Projekte where PNR = b);
      debugValueInfo(c)

      liefert:

      nid[]

      Ganz herzlich Frank

    • mirko3
    • vor 6 Tagen
    • Gemeldet - anzeigen

    Hi Frank. Genau dein Code funktioniert in meiner Beispiel DB, die ich dir mal beilege. Schau mal, wo die Unterschiede sind. In der Tabelle Projekte ist ein Button, in den Vorgängen steht der Code für die Massendatenverarbeitung. Teste noch ein Ergebnis in einem beliebigen, noch unverknüpften Vorgang, ob es einen Wert enthält.

    first(select Projekte where PNR = b).PNR
    

    Hier muß ein Wert wiedergegeben werden. Wenn nicht, wird vielleicht beim csv-Import im Feld PNR-Vorbereitung ein Leerzeichen importiert. Dann prüfe ob 

    let b := this.'PNR-Vorbereitung';
    let c := first(select Projekte where PNR = trim(b));
    c
    

    funktioniert. Gruß Mirko

      • Rechtsanwalt
      • Frank_DIPO2
      • vor 3 Tagen
      • Gemeldet - anzeigen

       Vielen Dank erneut! es lag am Leerzeichen - es war unsichtbar. Hiermit bist Du mein Mittwochsheld extraordinaire. Ganz herzlichen Dank für die Unterstützung!🎉

Content aside

  • vor 3 TagenZuletzt aktiv
  • 5Antworten
  • 47Ansichten
  • 2 Folge bereits