0

Funktions- und Sprachreferenz

Hallo, ich habe zwei Frage:

1) Ich würde gerne zu einer bestehenden Uhrzeit eine gewisse Anzahl Stunden und Minuten addieren. Leider schaffe ich das nur indem ich zwei Datenfelder von Typ Uhrzeit addiere, aber ich hätte erwartet, dass man auch z.B. Begin := Begin + "07:00" oder wie auch immer angeben kann. Ich habe schon alle möglichen Varianten probiert, komme aber nicht auf eine Lösung. Ist es überhaupt möglich Zeiten auf diese Weise zu addieren?

2) es gibt bei Rechnen die Funktion Prozent %, allerdings finde ich dazu keine Beschreibung und bekomme auch keine sinnvollen Werte raus. Wo finde ich dazu eine Erklärung/Beispiel?

Noch zwei Anregungen:
- generell fände ich es gut, wenn einzelnen Funktionen durchgehend mit ein oder zwei aussagekräftigen Beispielen beschrieben wären, das würde viel Zeit ersparen.

- will man eine Funktion als Text eingeben, werden im Editor zwar Zeilennummern angezeigt, aber leider keine Spaltennummern. Die Fehlerhinweise erscheinen aber mit Spaltennummer! Dann beginnt das fleissige Zählen....

Besten Dank Klaus

493 Antworten

null
                            • bernd
                            • vor 7 JahrenThu, November 23, 2017 at 10:45 AM UTC
                            • Gemeldet - anzeigen
                            DANKE, hat funktioniert...
                            • Thomas_Biedermann
                            • vor 7 JahrenThu, November 23, 2017 at 4:20 PM UTC
                            • Gemeldet - anzeigen
                            Hallo
                            Ich nutze NinoxCloud mit meinem Team und möchte Arbeitsberichte, die vor Ort beim Kunden erstellt und unterschrieben werden, erstellen die eine einmalige automatisch erstellte Nummer haben. Da es durchaus sein kann dass zwei Mitarbeiter gleichzeitig einen Bericht erstellen oder ein Kollege gerade keine Internetverbindung hat, ist die Gefahr groß dass zwei Berichte die gleiche Nummer haben. Der Aufbau der nummer ist nicht so wichtig aber ich stelle sie mir in etwa so vor "A12345". Ich habe irgendwie so im Kopf dass ich die nummer vom Benutzer abhängig mache. Also in etwa so dass die Nummerierung vom Benutzer A mit A10001 beginnt und von Benutzer B mit A20001. Leider bin ich da noch nicht richtig weiter gekommen wie ich dass in einer Tabelle mache und für jeden Benutzer eine eigene Tabelle anlegen möchte ich nicht.
                            Hat zufällig jemand eine Idee wie ich das lösen könnte?
                            Danke
                            • bernd
                            • vor 7 JahrenFri, November 24, 2017 at 3:16 AM UTC
                            • Gemeldet - anzeigen
                            Hallo,
                            ich würde in der Tabelle eine Spalte „Benutzerkennung“ und eine Spalte „Nummer“ anlegen. Jeder Mitarbeiter bekommt seine eigene Kennung, z.B. Mitarbeiter 1 „DR“, Mitarbeiter 2 „HG“ usw.
                            Die Nummer dann bei jedem neuen Datensatz erzeugen lassen:
                            Nummer := max((select TABELLENNAME wehre Benutzerkennung = NUTZER ).Nummer) + 1
                            NUTZER ist die Benutzerkennung und wird von den Daten vom Mitarbeiter übernommen...
                            Tauschi
                            • bernd
                            • vor 7 JahrenFri, November 24, 2017 at 3:19 AM UTC
                            • Gemeldet - anzeigen
                            vergessen.—
                            die eigentliche Auftragsnummer dann in einer Funktion zusammensetzen lassen... Benutzerkennung + Nummer Ergebnis ist dann z.B.
                            DR-1234 oder HG-1234
                            • rweinhold
                            • vor 7 JahrenFri, November 24, 2017 at 11:46 AM UTC
                            • Gemeldet - anzeigen
                            Hallo,

                            ich möchte aus einer Tabelle "Produkte" Produkte mit einer eindeutigen Artikelnummer in eine Tabelle "Preise" übernehmen um Ihnen dort weitere Informationen zuzuweisen.
                            Produkte die allerdings bereits in der Tabelle "Preise" sind sollen nicht auswählbar sein.

                            Vielen Dank!
                            • Birger_H
                            • vor 7 JahrenFri, November 24, 2017 at 1:29 PM UTC
                            • Gemeldet - anzeigen
                            Können Sie mir (support@ninoxdb.de) die Datenbank, an der Sie arbeiten einmal also Kopie zuschicken (Hauptmenü -> "Archiv sichern unter...")? Ich schaue dann gerne einmal hinein.

                            Birger - Ninox Support
                            • Thomas_Biedermann
                            • vor 7 JahrenMon, November 27, 2017 at 9:49 AM UTC
                            • Gemeldet - anzeigen
                            Hi Tauschi
                            Danke für deinen Input.
                            Leider konnte ich so nicht das gewünschte Ergebnis erziehlen.
                            Ich bekam immer den Error: Diese Aggregation ist nicht möglich: max(string)

                            ich habe nun eine Benutzerkennung mit der NutzerID erstellet und dazu dann eine ID mit der ich nun die Nutzer unterscheiden kann.
                            hier mein skript:

                            Benutzerkennung := userId();
                            if Benutzerkennung = "xxxxxxxxxxxxxxxxxx" then
                            (TechnikerID := "1")
                            else
                            if Benutzerkennung = "xxxxxxxxxxxxxxxxxx" then
                            (TechnikerID := "2")
                            else
                            if Benutzerkennung = "xxxxxxxxxxxxxxxx" then
                            (TechnikerID := "3")
                            else
                            if Benutzerkennung = "xxxxxxxxxxxxxxxx" then
                            (TechnikerID := "4")
                            else
                            if Benutzerkennung = "xxxxxxxxxxxxxxxxx" then
                            (TechnikerID := "5")
                            else
                            if Benutzerkennung = "xxxxxxxxxxxxxxxx" then
                            (TechnikerID := "5")
                            else
                            void;
                            (let myID := TechnikerID;
                            let myNR := "A" + myID + format(cnt((select Servicebericht)[(TechnikerID = myID)]) + 1, "0000");
                            NR := myNR)

                            xxxxx ersetzt die userID
                            Ergebniss dann "A10001"

                            Ich weis nicht ob dies jetzt der einfachste weg war aber auf jeden fall funktioniert es jetzt wie ich wollte.
                            Vielen Dank für deine Hilfe!
                            • bernd
                            • vor 7 JahrenTue, November 28, 2017 at 6:48 AM UTC
                            • Gemeldet - anzeigen
                            Hallo,
                            gibt es schon eine Zeitvorstellung für das nächste Update (order by... desc)?
                            VG
                            Tauschi
                            • Birger_H
                            • vor 7 JahrenTue, November 28, 2017 at 7:48 AM UTC
                            • Gemeldet - anzeigen
                            Das Update kommt in wenigen Wochen - und: Probieren Sie doch einmal:

                            rsort(array) => array; sorts an array in reverse order (descending)

                            Quelle: hier

                            Birger - Ninox Support
                            • jomo_h
                            • vor 7 JahrenTue, November 28, 2017 at 11:25 AM UTC
                            • Gemeldet - anzeigen
                            Hallo,

                            ich brauche Hilfe bei der Erstellung eigener Funktionen.
                            Gebe ich, wie im Beispiel angegeben, folgenden Code ein:

                            function hello(name) do
                            "Hello" + name + "!"
                            end

                            dann bekomme ich eine Fehlermeldung ( Symbol erwartet ":" in Spalte 19, bzw. ID erwartet in Spalte 21). Was mache ich falsch?
                            • Birger_H
                            • vor 7 JahrenTue, November 28, 2017 at 11:56 AM UTC
                            • Gemeldet - anzeigen
                            Hier gibt es zwei Probleme: Der Parametertyp, der an die Funktion übergeben wird, muss an dieser Stelle deklariert werden:
                            –––
                            function hello(x: text) do
                            "Hello " + x + "!"
                            end;
                            hello("Peter")
                            –––


                            Das zweite Problem ist: Die function()-Erweiterung der Scriptsprache funktioniert derzeit nur in der App, noch nicht im Browser. Wir kümmern uns.

                            Birger - Ninox Support
                            • jomo_h
                            • vor 7 JahrenTue, November 28, 2017 at 1:25 PM UTC
                            • Gemeldet - anzeigen
                            Ah, alles klar. Vielen Dank für die schnelle Antwort.
                            • Dominik_Eng
                            • vor 7 JahrenWed, November 29, 2017 at 10:10 AM UTC
                            • Gemeldet - anzeigen
                            Herzlichen Dank, jetzt funktioniert es. Habe es bis jetzt auch nicht zum Laufen gebracht.
                            Warte aber noch bis es auch im Browser geht.
                            • Thomas_Biedermann
                            • vor 7 JahrenFri, December 1, 2017 at 9:23 AM UTC
                            • Gemeldet - anzeigen
                            Hallo
                            Ich habe leider ein kleines Problem mit meiner automatischen Nummerierung von Serviceberichten die ich im Ninox erstelle. Es ist hier ganz wichtig dass kein Bericht doppelt nummeriert wird. jetzt ist es so dass wenn ich einen bericht mit dem Browser erstelle, und dann einen mit der app am ipad, die app eine nummer auslässt und wenn ich dann wieder einen mit dem Browser erstelle, dieser die gleiche nummer verwendet. also in etwa so:
                            1. Bericht im Browser nummer A10001
                            2. Bericht in der App nummer A10003
                            3. Bericht im Browser nummer A10003.
                            hat jemand eine idee woran das liegen könnte?
                            Danke
                            Lg
                            Tom
                            • Frank_Bohmer
                            • vor 7 JahrenFri, December 1, 2017 at 3:11 PM UTC
                            • Gemeldet - anzeigen
                            Hallo Tom,
                            nimm am Besten folgende Formel:

                            Berichtnummer := "A" + max((select Servicebericht).number(substr(Berichtnummer, 1))) + 1

                            Viele Grüße
                            Frank
                            • Thomas_Biedermann
                            • vor 7 JahrenFri, December 1, 2017 at 6:40 PM UTC
                            • Gemeldet - anzeigen
                            Hallo Frank
                            Danke für die Info!
                            Da ich für jeden User (insgesamt 6) eine eigene Nummer generieren muss, habe ich folgende Formel verwendet:

                            (let myID := TechnikerID;
                            let myNR := “A” + myID + format(cnt((select Servicebericht)[(TechnikerID = myID)]) + 1, “0000″);
                            NR := myNR)

                            Eigentlich funktioniert es ja wenn ich immer die gleiche Platform verwende, z.B. Immer das iPad. Nur wenn ich zwischen Browser und iPad wechsle, passt die passt die Nummerierung nicht mehr.
                            Ich weiß jetzt leider nicht ob es generell ein Bug von Ninox ist oder ob ich einen Fehler im Skript habe.
                            Lg
                            Tom
                            • Mirko.1
                            • vor 7 JahrenSat, December 2, 2017 at 8:29 AM UTC
                            • Gemeldet - anzeigen
                            Hallo,

                            ich bräuchte noch mal einen Tip.
                            Habe zwei Tabellen(Tab_Strassen, Tab_Touren), die über eine Verknüpfungstabelle miteinander verbunden sind.
                            Wenn ich nun in Tab_Straßen die Verknüpfung zu Tab_Touren erstellen möchte, muss ich ja immer den Weg über die Verknüpfungstabelle gehen.
                            Kann ich da auch eine Befehlschaltfläche anlegen, mit der man per Klick gleich in die Tabelle Touren kommt zu einem neuen Datensatz mit automatisch erstellter Verknüpfung?

                            Grüße
                            Mirko
                            • Leonid_Semik
                            • vor 7 JahrenSat, December 2, 2017 at 12:41 PM UTC
                            • Gemeldet - anzeigen
                            Halo Mirko,

                            let SN := Nr;
                            let newR := (create 'Tab_Touren');
                            let RN := newR.Nr;
                            let newV := (create 'Verknüpfungstabelle');
                            newV.('Tab_Strassen' := SN);
                            newV.('Tab_Touren' := RN);
                            popupRecord(record('Tab_Touren',number(RN)))

                            Hier musst du natürlich gucken, wie du die Verknüpfungen zu den Tabellen in der Verknüpfungstabelle genannt hast.

                            Grüße
                            Leo
                            • JHV
                            • vor 7 JahrenSat, December 2, 2017 at 8:26 PM UTC
                            • Gemeldet - anzeigen
                            Hallo Ninox Support,

                            ich komme mit dieser Syntax nicht weiter - Fehlermeldung ist
                            'Die Ausrücke für 'dann' und 'sonst' liefern unterschiedliche Dateitypen zurück'

                            let a := substr('#Abfahrten', 7, 5);
                            if a != null then
                            first('#011-01 Zughalt'[(text('011.#AbfahrtZ') = a)].'011.Zugnr.'.'010.Nummer')
                            else
                            void

                            Wie müßte es richtig heißen?
                            VG und Danke
                            • bernd
                            • vor 7 JahrenSun, December 3, 2017 at 7:25 AM UTC
                            • Gemeldet - anzeigen
                            bersuche es mal damit
                            ...
                            else
                            „“

                            einen leeren Steing
                            • Mirko.1
                            • vor 7 JahrenSun, December 3, 2017 at 8:07 AM UTC
                            • Gemeldet - anzeigen
                            Hallo Leo,

                            vielen Dank für Deine Hilfe, hat wieder einwandfrei geklappt!

                            Hab hier in den Kommentaren ab und an gelesen, dass man die Lupe und /oder das Plussymbol in der verknüpften Tabelle ausblenden kann, leider stand da nirgends, wie dieses geht. Ist das möglich?

                            Ein Forum wäre echt super, hier irgendwelche Formeln wieder zu finden ist echt ein Graus!

                            Grüße
                            Mirko
                            • Mirko.1
                            • vor 7 JahrenSun, December 3, 2017 at 10:31 AM UTC
                            • Gemeldet - anzeigen
                            Hallo Leo,

                            vielleicht hast Du ja auch hier eine Lösung:
                            Ich habe in der Tab_Mitarbeiter noch ein Auswahlfeld, das nach Auswahl eines bestimmten Wertes ähnlich wie die Befehlschaltfläche eine Verknüpfung herstellen soll. Es soll aber in der anderen Tabelle kein neuer Datensatz erstellt werden, die Verknüpfung soll dort mit einem bestimmten bestehenden Datensatz hergestellt werden.
                            Ich habe es schon irgendwie mit der Formel von Dir für die Befehlschaltfläche mit select statt create versucht, aber irgendwie haut die Verknüpfung nie richtig hin.

                            Grüße
                            Mirko
                            • Leonid_Semik
                            • vor 7 JahrenSun, December 3, 2017 at 11:40 AM UTC
                            • Gemeldet - anzeigen
                            Hallo Mirko,
                            Das Problem dabei ist es, dass die Auswahltabelle nicht mit dem Befehl aufrufbar ist. Also musst du noch eine zusätzliche 1:n Beziehung aufbauen und die Werte von dort aus suchen und in die n:m Tabelle reinschreiben. danach sollte der Wert in der 1:n Beziehung wieder geleert werden.
                            Ich habe eine Beispieldatenbank für Multiple Schlagwörter

                            https://www.dropbox.com/s/ha4pwtlxia1g9p3/MULTIPLE_TAGS.ninox?dl=0

                            Dort kannst du die Materialien mit verschiedenen Schlagwörter besetzen.
                            Du kannst dort auch sehen, dass das Feld "SHLAGWORT HINZUFÜGEN" keinen "Plus-Symbol" hat. Das kann man nur mit einer Zusatztabelle erreichen und diese als Komposition mit der Tabelle TAGS verknüpfen.
                            Schau dir die Datenbank an, vielleicht kannst du die Formeln für dich verwenden.

                            Leo
                            • JHV
                            • vor 7 JahrenSun, December 3, 2017 at 2:46 PM UTC
                            • Gemeldet - anzeigen
                            Danke Tauschi,
                            leider die gleiche Meldung. Habe auch schon mal *else* und den Rest weggelassen aber dann kommt die Meldung auch.

                            Der code selber steht in einer Funktionsvariablen, der Abfahrtzeiten aus einem String liest und dazu sich die Zugnummer sucht.
                            • Mirko.1
                            • vor 7 JahrenSun, December 3, 2017 at 3:55 PM UTC
                            • Gemeldet - anzeigen
                            Hallo Leo,

                            ich bin dann jetzt lieber auf ein Befehlschaltfläche umgestiegen, leider bekomme ich auch da nicht hin, dass ich nicht einen neuen Datensatz in der anderen Tabelle anlegen will, sondern die Verknüpfung mit einem bestehenden, quasi das Lupensymbol.

                            Grüße
                            Mirko

                                        Content aside

                                        • vor 7 JahrenSun, June 24, 2018 at 5:57 AM UTCZuletzt aktiv
                                        • 493Antworten
                                        • 134743Ansichten