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
    • Holzi
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Die "Datenbank" ist nur eine lose Sammlung von für mich wichtigen Beiträgen aus diesem "Forum". Aber vielleicht hilfts ja schon mal weiter.
    Wäre schön, wenn "andere" diese "Datenbak" mitpflegen würden. Das geht ja über Dropbox.
    Nachrichten dazu sollten aber auf jeden Fall hier:
    http://manual.ninoxdb.de/de/forums/forum/support-de/
    gepostet werden. Sonst findet es wieder keiner....
    • mistrlistr
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo liebe Ninoxer!

    Ich habe folgendes Problem: Seit einem neuen Update wird folgende Funktion nicht mehr ausgeführt:
    if 2 = 1 then null else "test" end
    Der Datentyp null scheint also jetzt mit dem Typ String inkompatibel?!
    Leider baut darauf meine gesamte Datenbank auf...
    Ist das nur ein temporärer Fehler oder muss ich jetzt meine gesamte Datenbank abändern?

    Viele Grüße
    • Birger_H
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Eine Karteireiter oder ein bestimmtes Feld anzuspringen ist derzeit noch nicht möglich.

    Sie könnten ggf. die Sichtbarkeit der anderen Elemente regeln...

    Birger - Ninox Support
    • Birger_H
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Die Funktion
    if 2 = 1 then null else "test"
    war schon immer fehlerhaft. "then" und "else" müssen den gleichen Datentyp haben. Was sich geändert hat ist der Umgang von Ninox mit diesem Fehler.
    Ich fürchte, Sie müssen umbauen.

    Birger - Ninox Support
    • mistrlistr
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Alles klar, vielen Dank für die schnelle Antwort! Die Arbeit ist halb so schlimm, aber ich wollte das nur klären, bevor ich mich dransetze :-)
    • cyan_button
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo,

    ist es möglich ein Auswahlfeld mit Werten zu befüllen?

    Ausgangssituation: Ich habe eine Liste mit Werten, die ich abfrage. Daraus entsteht ein Array, dessen Werte ich an ein Auswahlfeld übergeben möchte.

    Beispiel: myArray["Berlin", "Paris", "London"]
    Und nun möchte ich die drei Hauptstädte an ein Auswahlfeld übergeben. Wie lautet die Deklaration damit ein Auswahlfeld mit folgendem Inhalt entsteht:
    1. Berlin
    2. Paris
    3. London

    Vielen Dank im Voraus
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Ich habe jetzt für mich alle neue Funktionen getestet bis auf

    Object notations: {name:"Foo"}
    Call REST services: http(method, url, header, body)

    Mit Objekten kann man noch halbwegs nachvollziehen. Die Frage ist, wie kriege ich die Objekte in Ninox ausgelesen?
    Ich habe mir jetzt bei googleapis den Key geholt um die Koordinaten von Adressen rauszubekommen. Wenn ich im Browser eeingebe:
    ---
    https://maps.googleapis.com/maps/api/geocode/json?address=Hansastr.+2,++35683+Haiger&key=[......]
    ---
    bekomme ich die Objekte in json:
    ---
    {
    "results" : [
    {
    "address_components" : [
    {
    "long_name" : "2",
    "short_name" : "2",
    "types" : [ "street_number" ]
    },
    {
    "long_name" : "Hansastraße",
    "short_name" : "Hansastraße",
    "types" : [ "route" ]
    },
    {
    "long_name" : "Haiger",
    "short_name" : "Haiger",
    "types" : [ "locality", "political" ]
    },
    {
    "long_name" : "Lahn-Dill-Kreis",
    "short_name" : "Lahn-Dill-Kreis",
    "types" : [ "administrative_area_level_3", "political" ]
    },
    {
    "long_name" : "Gießen",
    "short_name" : "GI",
    "types" : [ "administrative_area_level_2", "political" ]
    },
    {
    "long_name" : "Hessen",
    "short_name" : "HE",
    "types" : [ "administrative_area_level_1", "political" ]
    },
    {
    "long_name" : "Deutschland",
    "short_name" : "DE",
    "types" : [ "country", "political" ]
    },
    {
    "long_name" : "35708",
    "short_name" : "35708",
    "types" : [ "postal_code" ]
    }
    ],
    "formatted_address" : "Hansastraße 2, 35708 Haiger, Deutschland",
    "geometry" : {
    "location" : {
    "lat" : 50.74585,
    "lng" : 8.213089999999999
    },
    "location_type" : "ROOFTOP",
    "viewport" : {
    "northeast" : {
    "lat" : 50.74719898029151,
    "lng" : 8.214438980291503
    },
    "southwest" : {
    "lat" : 50.74450101970851,
    "lng" : 8.211741019708498
    }
    }
    },
    "partial_match" : true,
    "place_id" : "ChIJ4zapY3MWvEcRDI2Ki95Oi5g",
    "types" : [ "street_address" ]
    }
    ],
    "status" : "OK"
    }
    ---
    Diesen Text kann ich auch bei Ninox eingeben - ohne Felermeldung.
    Hierzu zwei Fragen:
    1. wie kriege ich googleapis URL in Ninox rein: http(method, url, header, body)
    Habe versucht mit http("GET","https://maps.go........",Textfel1,Textfeld2) - ohne Erfolg.
    2. Wenn ich P.1 schaffe, wie lese ich die Schlüssel aus dem Objekt heraus.

    Grüße
    Leo
    • Dominik_Eng
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Ist im Moment nicht möglich, leider.
    Wäre eine sehr nützliche Funktion, aber das Jahr ist ja noch jung ;-)
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Die Befehle popupRecord und openRecord funktionieren in Web App nur in Verbindung mit der Befehlsschaltfläche. Wenn ich diese Befehle in einen Skript nach Änderung einbaue, funktionieren sie nur bei Mac, iPad, iPhone.
    Meine Vermutung: die Befehlsschaltfläche verarbeitet die Skripte auf Clientebene und die Triggers werden am Server ausgeführt. Bei WebApp liegt der Fehler irgendwo bei der Kommunikation zwischen Client und Server.
    Es gibt seit neustem eine Option "do as server....end". In diesem Fall wäre es gut eine Option "do as client...end" zu haben.
    Oder einfach den Fehler beheben :-)

    Grüße
    Leo
    • Holzi
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo,
    Deine Frage kann ich leider nicht beantworten, ist mir eine Nummer zu gross ;)
    Aber ich habe eine Frage, Du schreibst:
    Ich habe jetzt für mich alle neue Funktionen getestet......
    Da mal wieder nichts dokumentiert ist - oder ich es nicht finde:
    Welche Funktionen sind das und was können sie ?
    Antwort bitte auch an
    http://manual.ninoxdb.de/de/forums/forum/support-de/
    Dann haben alle was davon

    Vielen Dank
    • sbecker_flashcablech
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Spannender Versuch!
    Zu Punkt 2:
    Die Lösung kenne ich leider auch nicht, aber mir ist aufgefallen, dass Ninox die Arrays innerhalb des JSON-Objekts wohl als Springs interpretiert. D.h. an die Inhalte darin kommst Du dann nicht mehr so einfach ran, wenn ich das richtig sehe. Auf z.B. 'status' zuzugreifen ist ja kein Problem... da pack ich einfach das JSON-Objekt in ne Variable (z.B. myObj) und kommen dann via myObj.status an den Inhalt - in deinem Beispiel den String "OK".
    Solange da also keine Lösung seitens Ninox kommt, müsstest Du vermutlich das Objekt ausserhalb von Ninox entsprechend aufbereiten, dass da keine Arrays mehr drin sind (Unterobjekte sind ja kein Problem) oder aber den resultierenden String per regex auswerten. Aber vielleicht hat ja noch jemand eine andere Idee.

    Zu Punk 1: Habe ich jetzt noch nicht drüber nachgedacht, aber falls mir dazu noch was einfällt, sage ich Bescheid.

    LG, Sarah
    • sbecker_flashcablech
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Springs = Strings (ich hoffe, das war der einzige Tippfehler)
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Sarah,
    so ganz glücklich bin ich damit nicht. Das JSON-Objekt kann ich momentan auch nirgendwo speichern.
    Hoffentlich kommt von Entwickler eine Erklärung. Ich habe gehofft auf heutiger Web-Konferenz die Antworten zu finden. Ging leider nicht.
    • Mirko.1
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo,

    bräuchte noch mal einen Denklanstoss.
    Habe eine Tabelle mit einer Untertabelle, in die ich Daten eingeben möchte.
    Da mir der Klick auf das kleine Plussymbol immer etwas zu friemelig ist, habe ich eine Schaltfläche erstellt, mit der die Untertabelle in einem popup Fenster geöffnet wird, und ein neuer Datensatz erstellt wird.
    Nun möchte ich aber gleich im Anschluss weitere Daten eingeben in die Untertabelle, ohne das Pop geschlossen werden muss.
    Wenn ich über das Plussymbol die UT aufrufe, kann ich mittels Plus oben in der Leiste gleich einen neuen Datensatz erstellen. Mit der Schaltfläche jedoch wird das Plussymbol oben augeblendet.
    Nun würde ich gerne in der Untertabelle auch eine Befehlsschaltfläche erstellen, um dort gleich auch einen neuen Datensatz erzeugen zu können.
    Wie lautet dort die Formel, irgendwie steh ich da auf dem Schlauch.
    Hier noch die Formel der Befehlsschaltfläche, mit der ich die UT öffne:

    let SN := Nr;
    let newR := (create Aufgaben);
    let RN := newR.Nr;
    newR.('Straßen' := SN);
    popupRecord(record(Aufgaben,number(RN)))

    Grüße
    Mirko
    • Frank_Bohmer
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Leo,
    Deine Vermutung ist korrekt.
    Wie wir das lösen können, müssen wir noch durchdenken.
    Viele Grüße
    Frank
    • Alexander_Koenig
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Ati,

    das befüllen von Auswahlfeldern per Skript ist leider noch nicht möglich. Das Feature haben wir auf der Anforderungsliste. Einen genauen Termin kann ich noch nicht nennen.

    Viele Grüße, Alex
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Mirko,
    wenn die zweite Aufgabe zu der gleichen Straße gehören sollte, dann:
    ---
    let SN:=‘Straßen’;
    let newR := (create Aufgaben);
    let RN := newR.Nr;
    newR.(‘Straßen’ := SN);
    popupRecord(record(Aufgaben,number(RN)))
    ---
    grüße
    Leo
    • Mirko.1
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Leo,
    das hatte ich auch schon probiert, funktioniert soweit auch, nur dass sich jedesmal ein neues Popup Fenster öffnet, das man dann anschließend auch wieder schließen muss. Bei Eingabe von 10 Positionen wird das ziemlich nervig.
    Ich hab mir vorgestellt, dass es so wie beim betätigen der Pluslogik in der UT funktioniert, da springt er im selben Fenster auf einen neuen Datensatz, also die Felder werden einfach geleert, und man kann neue Daten eingeben.
    Das geht aber leider nur dann, wenn ich zuvor in der OT die UT mit dem kleinen Plus an der Tabelle öffne, wenn ich Sie mit der Befehlsschaltfläche öffne ist das Plus zum anlegen eines neuen Datensatzes in der UT ja ausgegraut, warum auch immer?

    Grüße
    Mirko
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Mirko,
    und wenn du mit openRecord statt popupRecord probierst?
    Dabei wird zzwar die Tabelle Straße geschlossen. Du kannst aber, wenn du mit dem Eingeben fertig bist, mit der Schaltfläche "Straße öffnen" den Datensatz wieder öffnen.
    ---
    let ST := 'Straßen';
    closeAllRecords();
    openRecord(record('Straßen',number(ST)))
    ---
    Ich finde die Logik bei Plus Zeichen Nachvollziehbar. Das Plus bezieht sich auf unteres Formular. Man kann mehrere Popups öffnen und dann weiß man nicht mehr worauf man sich beim Plus beziehen soll.

    Grüße
    leo
    • bernd
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo,
    keine Frage zum iPhone.
    Ich erstelle im Skript einen neuen Datensatz und rufe diesen mit openRecord() auf.
    Auf d em Mac und iPad bin ich bereits im Bearbeitungsformular, auf dem iPhone nicht. Dort wird mir die Tabelle angezeigt und ich muß erst auf den entsprechenden Datensatz klicken...
    Gibt es noch eine Funktion, wo ich auf dem iPhone gleich im Bearbeitungsformular bin?
    Danke
    • Mirko.1
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Leo,

    "Ich finde die Logik bei Plus Zeichen Nachvollziehbar. Das Plus bezieht sich auf unteres Formular. Man kann mehrere Popups öffnen und dann weiß man nicht mehr worauf man sich beim Plus beziehen soll."

    Ja, klingt logisch, nur dass ich halt das Pluszeichen oben in der Schaltfläche in dem Popup der UT nutzen kann, wenn ich die UT über das kleine Plussymbol an der Tabelle im Formular geöffnet habe, und nicht nutzen kann, wenn ich die UT, mit meiner Meinung nach ja dem selben Befehl wie dem Pluszeichen oben, nur verpackt in einer Schaltfläche öffne.

    Das erschließt sich mir nicht.
    Bei mehreren geöffneten Popups klingt Deine Erklärung logisch.

    Grüße
    Mirko
    • Ninox Premiumpartner
    • Bastian_Vorholt
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Leider ist mir wieder ein Fehler in der Cloud Version aufgefallen. Ich habe eine Tabelle Angebote und eine Subtable Angebots Position, dann noch eine Tabelle Rechnung und eine Subtable Rechnungs Positionen.

    In Angebote ist ein button Angebot in Rechnung umwandeln. Wenn ich dieses Script ausführe übernimmt er nicht die Angebots Positionen in die Subtable Rechnungspositionen. Unter der Client Version klappt es fehlerfrei.
    • Frank_Bohmer
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Magicnetworks,
    könnten wir die Formel an support@ninoxdb.de zusgesendet bekommen, dann können wir das analysieren.
    Danke
    Frank
    • Alexander_Koenig
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Hallo Tauschi,

    für iPhone haben wir das Feature noch nicht. Es steht schon auf der Anforderungsliste.

    Viele Grüße, Alex
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Nach langem Rumprobieren steht jetzt die Formel. Zumindest für Google API
    —-
    let myJSON:=http("get","https://googleapis.com.........")
    —-

    Header und Body kann man hier ignorieren.
    Den Status kann ich , genau wie du beschrieben hast, ansprechen. Die Arrays bleiben unerreichbar. Auch bei einfachen selbstgeschriebenen JSON Dateien werden die Objekte innerhalb Arrays nicht erreicht.
    Alex, Birger, Frank,
    Bitte Hilfe!!!!!
    Grüße
    Leo

Content aside

  • vor 5 JahrenZuletzt aktiv
  • 493Antworten
  • 134608Ansichten