1

Anwendung "openFullscreen"

Hallo, wie kann ich erreichen, dass die zu öffnende Ansicht "Kunde A" der Tabelle "Organisation" im Vollbildmodus geöffnet wird.....? Sollte diese Funktion für eine Ansicht nicht zur Verfügung stehen, ist auch die Vollansicht einer individuellen Registerkarte in dieser Ansicht für mich sinnvoll/ ausreichend.

let sw01 := 'Teilnehmername:';
let sw02 := (create 'Teilnehmer_Protokoll');
sw02.(Tln_fix := sw01);
openTable("Organisation", "Kunde A")
openFullscreen(???????)

Zur Info - der Button mit dem auszuführenden Script ist in einer anderen Tabelle organisiert.......

25 Antworten

null
    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo
    Hast du dir mal die Mühe gemacht in der Ninox Dokumentation nach zu schauen?
    Die ist bezüglich der Schreibweisen zum benutzen von Funktionen hilfreich.
    https://docs.ninox.com/de/skripten/funktionen-ueberblick/funktionen/openfullscreen

    opemFull
    screen() benötigt zum ausführen noch zusätzliche Informationen und funktioniert nur mit einzelnen Tecords der Tabelle in Formularansicht.
    Eine Tabellenansicht kann man nicht Fullscreen öffnen.
    Da bietet sich eher ein Formular mit einer Ansicht an, die man Fullscreen öffnet.

    • ds_W_online
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Uwe, ich habe diverse Quellen wie die NINOX Doku, die NINOX-Referenz DB und dbzgl. Tutorials vorab, aber leider erfolglos "durchsucht" sowie auch eigenständig diverse Scripts ausprobiert.

    Ich habe in der Tabellenansicht - m.V.n. eine der "Ansicht" Varianten - den anzuzeigen Datensatz gefiltert, bekomme diesen aber nicht mit "this & Co" als Vollbild dargestellt. Dies habe ich auch mit einer Formularansicht - womit Du m.V.n. das Layout-Element "Registerkarte" meinst -  ergebnislos bzw. ohne das gewünschte Ergebnis versucht.......

    • ds_W_online
    • vor 1 Jahr
    • Gemeldet - anzeigen

    ..mein Ziel ist nach dem o.g. Feedback jetzt, mit dem Button der Tabelle X die Registerkarte/ Formularansicht der Tabelle Y als Vollbild aufzurufen, unter Berücksichtigung, dass die erstellte Ansicht/ Tabellenansicht der Tabelle Y bereits auf einen Datensatz der Tabelle Y gefiltert ist.....

    • ds_W_online
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo, wer kann mir sagen, wie ich jetzt mit Angabe der NINOX ID = Feld "Nr" nicht nur den ersten wie mit "first", sondern gezielt vorhandene IDs/ Datensätze ansprechen kann.....?, DANKE.

    let sw01 := 'Teilnehmername:';
    let sw02 := (create 'Teilnehmer_Protokoll');
    sw02.(Tln_fix := sw01);
    openTable("Organisation", "Kunde A")
    openFullscreen(first(select Organisation))

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

      ds. W_de Hallo, ich bin mir nicht sicher, ob ich das genaue Ziel de Aktion verstanden habe, aber wenn es darum geht, den mit "create" erstellten Datensatz und dort die Registerkarte namens "Kunde A" als Fullscreen zu öffnen, dann würde ich es so versuchen:

      let sw01 := 'Teilnehmername:';
      let sw02 := (create 'Teilnehmer_Protokoll');
      sw02.(Tln_fix := sw01);
      openFullscreen(sw02, "Kunde A")
      
    • ds_W_online
    • vor 1 Jahr
    • Gemeldet - anzeigen

    planox. pro - Danke für das Feedback, aber der "create Befehl" ist wieder eine andere Tabelle und völlig unabhängig von vom "Vollbild-Problem". Da ich versuche mich am Vokabular von NINOX zu orientieren, ist mit "Kunde-A" eine von mir als "Formular" definierte Tabellenansicht der Tabelle "Organisation" gemeint. In dieser Ansicht ist ein Filter auf einen bestimmten Teilnehme/ Kunden aktiviert. Die als Vollbild darzustellende Registerkarte in der Tabelle "Organisation" heißt "Stammdaten", aber m.V.n. bzw. lt. NINOX-Referenz DB verlangt die DB-Operation "openfullscreen" keine Angabe der Registerkarte........

    • Datenwart
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Moin ds. W_de,

    so ganz kann ich auch noch nicht folgen, aber nach meiner Einschätzung hast Du etwas in der NINOX-Referenz übersehen: Du kannst mit openFullscreen(this,"Registerkarte") sehr wohl eine spezielle Registerkarte in der Tabellenansicht mit den Daten des aktuellen Datensatzes ansprechen und dort anzeigen lassen.

    Habe das gerade mal auf die schnelle in NINOX nachgebaut: Ich bin in meinem Datensatz in der Formularansicht. Mit einem Button öffne ich dann diesen Datensatz im gewünschten Register der Tabelle als Fullscreen-Anzeige: openFullscreen(this,"Registerkarte").

    Hier noch der Link zur Referenz: 

    https://docs.ninox.com/de/skripten/funktionen-ueberblick/funktionen/openfullscreen

     

    Gruß

    Kai

    • ds_W_online
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Datenwart, vorab auch Dir Danke - aber ;-) wenn ich mein Script wie mehrfach nachgelesen/ probiert wie folgt einsetzte, öffnet sich nur die aktuelle Registerkarte als Vollbild, in welcher der Button organisiert/ konfiguriert ist.

    let sw01 := 'Teilnehmername:';
    let sw02 := (create 'Teilnehmer_Protokoll');
    sw02.(Tln_fix := sw01);
    openTable("Organisation", "Kunde A")
    openFullscreen(this, "Stammdaten")

    Die Tabelle "Organisation" ist aber eine andere Tabelle, so dass ich auch schon mehrere Varianten mit "select".. - leider erfolglos - probiert habe. Wen ich nur das "this" gegen eine numerische NINOX-ID tauschen könnte, ist mir evtl. schon "geholfen"....... 

    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    ds. W_de
    Wie ich aus deinem Script heraus lese, wechselst du mit 
    openTable("Organisation", "Kunde A")
    in die Tabelle 'Organisation' mit der Ansicht 'Kunde A'
    Und welcher Datensatz in der Tabelle 'Organisation' soll jetzt als Fullscreen geöffnet werden?
    This ist zu ersetzen durch die numerische ID eines Records in der Tabelle 'Organisation'.
    Das geht aber nirgendwo auf deinem Script hervor.

    Wie ich bereits in meinem ersten Post anmerkte, öffnet openFullscreen() nur einen einzelnen Record in der entsprechenden Tabelle. Man kann keine Ansicht einer Tabelle mit dieser Funktion öffnen.

    • Datenwart
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hi,

    .....Wen ich nur das "this" gegen eine numerische NINOX-ID tauschen könnte, ist mir evtl. schon "geholfen"....... 

    Du kannst das this per let auf eine andere Tabelle zeigen lassen. In meiner Testdatenbank  habe ich mit zwei Tabellen gearbeitet. Die ID = Nr des gewünschten Datensatzes (gesuchte_ID) habe ich mit einem dynamischen Auswahlfeld (Auswahl) abgefragt, und dann der Variablen Tabelle_Organisation die andere Tabelle zugewiesen - und zwar mit dem Filter, dass er nur  die gesuchte_ID heraussucht. Schließlich öffne ich den Fullscreen nicht mit this, sondern der zugewiesenen, anderen Tabelle. 

    let gesuchte_ID := number(Auswahl);
    let Tabelle_Organisation := first((select TB)[Nr = gesuchte_ID]);
    openFullscreen(Tabelle_Organisation, "Kunde A")
    
    • ds_W_online
    • vor 1 Jahr
    • Gemeldet - anzeigen

    UweG  - zu Deinem Feedback "..This ist zu ersetzen durch die numerische ID eines Records in der Tabelle 'Organisation'. Das geht aber nirgendwo auf deinem Script hervor....." - ich denke dies ist mein Problem, denn ich weiß nicht, wie ich "this" richtig ersetzen muss/ kann. Alle bisherigen Schreibweisen mit Feldname und Ziffern/ Nummern  für die wenigen NINOX IDs 3, 4, 6 und 7 waren erfolglos.......

    Datenwart - zu "..Du kannst das this per let auf eine andere Tabelle zeigen lassen......" - hab ich auch versucht mit einer Variablen bzw. let (m)eine Lösung zu finden, aber auch dies hat nicht funktioniert. Dein Script-Beispiel probiere ich schnellstmöglich aus - super und DANKE.....

    • Datenwart
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Gern geschehen 😀.

    Hier noch die kürzeste Variante, mit der Du die IDs direkt ansprechen kannst, zum Beispiel die ID 7:

    let Tabelle_Organisation := first((select TB)[Nr = 7]);
    openFullscreen(Tabelle_Organisation, "Kunde A")
    • ds_W_online
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Datenwart /Kai - jetzt konnte ich nicht warten und es funktioniert, d.h. mit nachstehenden Script öffnet sich die jeweilige Tabellenansicht in der Tabelle "Organisation" im Vollbildmodus und ich kann zwischen den Registerkarten wechseln, ohne das Vollbildformat zu verlieren ;-). Nochmals vielen Dank.......

    @uweg - es scheint als ob "openfullscreen" nicht auf Registerkarten beschränkt ist, sondern auch Tabellenansichten kann.......

    let sw01 := 'Teilnehmername:';
    let sw02 := (create 'Teilnehmer_Protokoll');
    let sw03 := number(5);
    let sw04 := first((select Organisation)[Nr = sw03]);
    sw02.(Tln_fix := sw01);
    openTable("Organisation", "Kunde B");
    openFullscreen(sw04, "Kunde B")

    Das Script ist natürlich "laienhaft", aber gebt mir noch ein paar Wochen/ Monate bis ich aus den Kinderschuhen bzgl. Programmiersprache raus bin ;-).......

      • UweG
      • vor 1 Jahr
      • Gemeldet - anzeigen

      ds. W_de 
      Ich stehe etwas auf dem Schlauch.
      Sind die Tabellen verknüpft?
      Ich verstehe das Datenmodell nicht so richtig.
      In welcher Tabelle wird denn das Script ausgeführt?
      In der Tabelle 'Organisation' oder 'Teilnehmer_Protokoll'
      Weshalb 'let sw03 := number(5)'
      (PS. 5 ist eine Zahl in dieser Schreibweise. Da benötigt man nicht noch ein number() herum)
      Was machst du, wenn der Record mit der ID 5 in der Tabelle Organisation gelöscht wird?

      • UweG
      • vor 1 Jahr
      • Gemeldet - anzeigen

      ds. W_de 
      Ich widerspreche hier mal.
      openFullscreen() kann nur auf im Formular enthaltene Register springen und öffnet nicht die erstellte Formularansicht der Tabelle.
      Die Formularansicht nutzt man meist nur, wenn man ein Dashboard baut und nur einen einzigen Record hat. Dafür nutzt man dann openTable(Tabellenname,"Ansichtsname").
      Der zeigt aber immer nur im Formular den Inhalt des ersten Record der Tabelle an.
      Wenn du die Formularansicht mal löschst, wird sich mit deinem Script trotzdem der entsprechende Record Fullscreen öffnen unabhängig ob du in den Tabellenansichten eine Formularansicht erstellt hast.
      Mit openFullscreen(Tabellenrecord,"Registername im Formular') kann man direkt in das entsprechende Register des Formulars springen, soweit vorhanden.
      Ist der Registername im Formular nicht enthalten, öffnet sich der Record trotzdem in Fullscreen 

    • Datenwart
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Moin,

    prima!, dass es nun erst mal "funktioniert".

    Du kannst das "openTable()" weglassen, da openFullscreen() sowieso immer das Formular on dem Datensatz öffnet.

    Ich schliesse mich Uwe an: das Datenmodell ist mir auch nicht klar und ebenso nicht, warum Du mit direktem Aufruf mit fester ID in der Tabelle arbeitest. Bei verknüpften, in Beziehung stehen Tabellen, lässt sich das elegant und einfach lösen, z. B. durch eine per select gefilterte Ansicht.

    Das direkte öffnen des Datensatzes in einer anderen Tabelle ist mit meinem o. g. Zweizeiler aber technisch möglich, wenn auch nicht empfehlenswert. Vielleicht magst Du eine leere Kopie Deiner Datenbank hier posten, dann kann man mal draufgucken. Auch ein Screenshot vom Datenmodell wäre hilfreich. 

    Gruß

    Kai

    • ds_W_online
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo UweG und Datenwart - final werde ich jetzt dieses, mit Euren Hinweisen  "korrigierte" Script verwenden:

    let sw01 := 'Teilnehmername:';
    let sw02 := (create 'Teilnehmer_Protokoll');
    let sw03 := 5;
    let sw04 := first((select Organisation)[Nr = sw03]);
    sw02.(Tln_fix := sw01);
    openFullscreen(sw04, "Dashboard")

    Zur Info/ zum Verständnis - der initiierende "Button" ist in Tabelle A/"Start",  die Tabellen sind nicht verknüpft, der create Befehl bedient Tabelle B/ "Teilnehmer_Protokoll" und die Tabelle C/ "Organisation" ist für die Anzeige/ Darstellung vorhandener Datensätze. Der Button übernimmt also mehrere (Parallel)Aufgaben. Die Tabellen sind eigenständig bzw. nicht verknüpft.  Final soll der User eine leicht überschaubare, "ablenkungsfreie" (Vollbild)Ansicht - siehe Sreenshot - seines dediziert zu bearbeitenden Datensatzes erhalten.......

    UweG - die User bekommen keine "Löschberechtigung" und ich als Admin setze die max. 250 "Datensätze" bzw. die dbzgl. "Organisationen" auf den Status "aktiv" vs. "passiv".......

    • UweG
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo ds. W_de

    Weshalb der Fullscreen genutzt wird ist mir klar, da man damit die Kontrolle über die Record-Button-Funktionen wie Löschen/Erstellen/Duplizieren etc. erhalten kann.
    Die meisten Partner nutzen es für ihre Projekte um den Drang des Users auf irgendwas klicken zu müssen zu unterbinden. ;-)

    Einiges ist mir organisatorisch zwar weiterhin unklar aber du wirst dir was dabei gedacht haben und  man kann dein Script noch etwas chronologischer und verkürzt schreiben:

    let sw01 := 'Teilnehmername:';
    let sw02 := (create 'Teilnehmer_Protokoll');
    sw02.(Tln_fix := sw01);
    openFullscreen(first((select Organisation)[Nr = 5]), "Dashboard")

    Und nochmals meine Frage: Was machst du, wenn der Datensatz mit der ID 5 in der Tabelle 'Organisation' aus Versehen gelöscht wird?
    Das sollte man abfangen und per alert() mitteilen:

    let sw01 := 'Teilnehmername:';
    let sw02 := (create 'Teilnehmer_Protokoll');
    sw02.('Tln_fix :'= sw01);
    let vTbl := select Organisation
    if first(vTbl[Nr = 5]) then
        openFullscreen(first(vTbl[Nr = 5])), "Dashboard")
    else
        alert("Der Datensatz mit der ID5 in der Tabelle 'Organisation' existiert nicht")
    end

    Weshalb 'let vTbl := select Organisation' ?
    Jeder select lädt den kompletten Inhalt der Tabelle.
    Sobald ich innerhalb eines Script die gleiche Tabelle per select immer wieder anspreche, wird Rechen- und Speicherleistung benötigt, die das Script langsamer macht.
    Das wirst du bei deinem kurzen Script nicht merken, aber lass es mal mit umfangreichen Tabellen und mehreren select-Aufrufen anwachsen. Dann kann man es schon spüren.
    Deshalb, wehret den Anfängen und versuchen diese Schreibweise sofort anzueignen, dass sie ein Automatismus wird.
    Wobei es mir trotzdem auch ab und an passiert in alte Verhaltensweisen zurück zu fallen.
     

    • ds_W_online
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Uwe, vielen Dank für die nützlichen Tipps, denn diese "Feinheiten" muss ich definitiv noch lernen, DANKE.

    Aber warum "if first(vTbl[Nr = 5]) then" 🤔, denn es gibt doch auch noch die Datensätze <5, welche doch immer vor dem 5. Datensatz sind oder? Da nur der Admin der DB - also ich - Datensätze löschen darf, wäre ein Alert, welcher mich vor dem irrtümlichen Löschen der Datensätze warnt auch sinnvoll ;-).......

    Die echten (Arbeits)Datensätze importiere ich beginnend mit der NINIX-ID 10, so dass der Nummernbereich 10 bis max. 249 gegen Verlust/ Veränderung "geschützt" sein muss.

    • ds_W_online
    • vor 1 Jahr
    • Gemeldet - anzeigen

    UweG - leider bekomme ich mit Deinem optimierten Script die als Anlage beigefügten  Fehlermeldungen, in der Anlage ..v01.png wie von Dir gesendet und in Anlage v02.png mit der von mir ergänzten/ "korrigierten" Klammer.....?

      • Datenwart
      • vor 1 Jahr
      • Gemeldet - anzeigen

      ds. W_de 

      Moin, ich bin zwar nicht angesprochen, aber der Syntax-Fehler liegt  meines Erachtens in der IF-Abfrage, die nicht stattfindet. Ohne die Funktion selbst zu hinterfragen, müsste es heissen:

      if first(vTbl).Nr = 1 then
      

      IF muss ja irgendwas abfragen (=, >, <, ...). ....

      Das aber nur als Erklärung für die IF-Funktion. Durch Deine Art der "Verknotung" / Verknüpfung der Datensätze zueinander komme ich nicht mehr durch....

    • ds_W_online
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Datenwart - Danke für Dein Feedback, aber ;-) in der von UweG  formulierten o.g. IF Abfrage "if first(vTbl[Nr = 5]) then" wird doch m.V.n. mit [Nr = 5] und "nur" auf Grund des Vergleichsoperators "=" in eckige Klammern gesetzt, die NINOX-ID abgefragt oder.....? Ich habe Deine Script Formulierung auch probiert, aber die o.g. "Fehler" werden weiterhin vom Editor reklamiert.....?

    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Die Fehlermeldung "openFullscreen([nid],string) " weist darauf hin, dass Du statt einer ID ein Array von ID anbietest. Selbst wenn es nur eine ID enthält, ist der Typ trotzdem ein Array. Erst mit first(Array) wird es wieder zum Typ "nid". Du kannst solche Sachen mit typeof() oder debugValueInfo() prüfen. Mirko

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

    Die Aufgabe ist vermutlich kein Hexenwerk, aber es scheint, als wenn alle Beteiligten (einschließlich mir) irgendwie im Nebel stochern und tlw. aneinander vorbei reden würde. Mein Vorschlag wäre deshalb, dass  ds. W_de seine Datenbank einfach mal hier als Anhang hochlädt (mit Demodaten). Dann kann man reinschauen, sich selbst ein Bild vom Datenmodell etc. machen und ggf. konkrete Hilfestellung geben.

    • ds_W_online
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Mirko - vielen Dank für die Erklärung bzgl. der Verwendung von "first" im o.g. Script und bzgl. der Prüfmöglichkeiten habe ich in der NINOX Referenz-DB auch weitere Infos gefunden ;-).......

    planox. pro  - ich versuche Deinen Vorschlag schnellstmöglich umzusetzen, aber die komplette DB ist einen lizenzierte, von mir eingekaufte DB-Lösung, welche ich "nur" in Bruchteilen an meine Anforderungen/ Wünsche anpassen möchte. Ich vermute, ich muss deshalb die DB vorab auf mein "Problemthema" reduzieren.......

Content aside

  • 1 „Gefällt mir“ Klicks
  • vor 1 JahrZuletzt aktiv
  • 25Antworten
  • 186Ansichten
  • 6 Folge bereits