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
                    • micgo
                    • vor 7 JahrenFri, August 18, 2017 at 3:59 PM UTC
                    • Gemeldet - anzeigen
                    HI Leo,

                    Vielen dank für die Hilfe. Ich habe das mal probiert. Als erstes für die Einnahmen. Dafür hatte ich dies gewählt:

                    let AA:=yearmonth(Date);
                    sum (select positions.'Preis Übertrag' where yearmonth(Datum Übertrag)=AA.Einahmen);

                    Nun bekomme ich die Fehlermeldung, dass nach "übertrag" eine ) erwartet wird. Setze ich die, kommt die Meldung Ende (;) erwartet. Setze ich das, werden mir Felder, die ich nicht kenne angezeigt. (Berechnung, Date, Invest, Revenue,...) Irgendeine Idee, die mir weiterhelfen könnte.?
                    • Leonid_Semik
                    • vor 7 JahrenSat, August 19, 2017 at 3:00 AM UTC
                    • Gemeldet - anzeigen
                    Tja, mit Klammern muss man sehr aufpassen. Ich habe jetzt bei mir so ausprobiert :

                    let AA := yearmonth(Date);
                    sum((select Purchases where yearmonth(Date) = AA).Einnahmen )

                    Es funktioniert. Warum nimmst du für select eine verknüpfte Tabelle (positions.'Preis Übertrag')? Es wäre besser, wenn man deine sehen konnte.
                    Grüße
                    Leo
                    • thomas_thomasschubertd
                    • vor 7 JahrenWed, August 23, 2017 at 8:23 AM UTC
                    • Gemeldet - anzeigen
                    Zusammenfassend lässt sich wohl sagen, dass eine Variable vor der Schleife definiert, in der Schleife nicht geändert werden kann. Zumindest habe ich da keinen Weg gefunden.

                    Hilfsweise habe ich jetzt eine Hilfstabelle und speichere mir die Werte hier in den Feldern zwischen. Etwas umständlich, aber geht.
                    • thomas_thomasschubertd
                    • vor 7 JahrenWed, August 23, 2017 at 8:28 AM UTC
                    • Gemeldet - anzeigen
                    Es fehlt die Möglichkeit Kommentare in den Skripten einzugegen. Gerade bei längeren und komplizierten Skripts wäre das echt hilfreich.
                    • Birger_H
                    • vor 7 JahrenWed, August 23, 2017 at 9:23 AM UTC
                    • Gemeldet - anzeigen
                    Dies ist derzeit leider noch nicht möglich. Du kannst Dich aber so behelfen:
                    –––
                    let myComment := "This sets the content of the field 'Text' to 'a default text.'";
                    Text := "a default text."
                    –––


                    Birger - Ninox Support
                    • micgo
                    • vor 7 JahrenThu, August 24, 2017 at 1:20 PM UTC
                    • Gemeldet - anzeigen
                    Hallo Leo,

                    vielen Dank noch einmal für den Anstoss.
                    Hat ein wenig gedauert bis ich alles verstanden hatte.
                    Da waren ein paar Denkfehler meinerseits.
                    Hier mit hat es dann funktioniert:

                    let AA := yearmonth(Date);
                    sum((select Positions where yearmonth('Datum Übertrag') = AA).'Preis Übertrag')
                    • fhs
                    • vor 7 JahrenFri, September 8, 2017 at 6:09 AM UTC
                    • Gemeldet - anzeigen
                    Hi, liebes Ninox-Team,

                    versuche gerade einen loop zu bauen. Das typische "while x < y do..." kennt ninox ja nicht. Also habe ich es mit "for i in range(0, anz) do..." probiert. anz ist eine Variable, die ich zuvor berechnet habe. Leider erhalte ich damit nur eine Fehlermeldung: "Die Funktion ist nicht definiert: range(number,numer)"

                    Was mache ich falsch?
                    • Birger_H
                    • vor 7 JahrenFri, September 8, 2017 at 6:39 AM UTC
                    • Gemeldet - anzeigen
                    Hier ein Beispiel, dass die Summe alle Quadrate bis 'Zahl' berechnet:
                    –––
                    sum(for i in range(0, Zahl + 1) do
                    i * i
                    end
                    )
                    –––


                    Birger - Ninox Support
                    • fhs
                    • vor 7 JahrenFri, September 8, 2017 at 7:21 AM UTC
                    • Gemeldet - anzeigen
                    Hi Danke,

                    aber dabei erhalte ich die selbe Fehlermeldung: "Die Funktion ist nicht definiert: range(number,numer)"
                    • Birger_H
                    • vor 7 JahrenFri, September 8, 2017 at 7:26 AM UTC
                    • Gemeldet - anzeigen
                    Bitte prüfen Sie Ihre Schreibweise. Hier ein kleines Beispiel:


                    Birger - Ninox Support
                    • fhs
                    • vor 7 JahrenFri, September 8, 2017 at 7:48 AM UTC
                    • Gemeldet - anzeigen
                    Wenn ich die Funktion aufrufe, ist sie rot markiert und ein Fehler erscheint:

                    Die Formel ist ungültig: Die Funktion ist nicht definiert: range(number,numer)
                    • fhs
                    • vor 7 JahrenFri, September 8, 2017 at 7:55 AM UTC
                    • Gemeldet - anzeigen
                    Vielleicht noch die Umgebung: Windows-Server 1.7.1.1; Browser: Firefox 55
                    • Birger_H
                    • vor 7 JahrenFri, September 8, 2017 at 9:39 AM UTC
                    • Gemeldet - anzeigen
                    In Ninox Server steht die Funktion "range()" noch nicht zur Verfügung.

                    Birger - Ninox Support
                    • fhs
                    • vor 7 JahrenFri, September 8, 2017 at 10:48 AM UTC
                    • Gemeldet - anzeigen
                    und wie kann ich dann einen loop bauen?
                    • Birger_H
                    • vor 7 JahrenFri, September 8, 2017 at 10:52 AM UTC
                    • Gemeldet - anzeigen
                    In der Server-Version ist ein Loop über folgende Syntax möglich:
                    –––
                    for p in (select Person where Eyecolor = "green")
                    p.Haircolor := "red"
                    –––


                    Birger - Ninox Support
                    • fhs
                    • vor 7 JahrenFri, September 8, 2017 at 11:09 AM UTC
                    • Gemeldet - anzeigen
                    ich will aber keinen select machen, sondern nur einen Schritt so lange wiederholen, bis eine bestimmte Anzahl erreicht wurde.
                    • Birger_H
                    • vor 7 JahrenFri, September 8, 2017 at 12:42 PM UTC
                    • Gemeldet - anzeigen
                    Versuchen Sie folgendes:
                    –––
                    for i in [1,2,3,4,5,6,7,8,9,10] do
                    i * i
                    end
                    –––

                    Birger – Ninox Support
                    • fhs
                    • vor 7 JahrenFri, September 8, 2017 at 2:00 PM UTC
                    • Gemeldet - anzeigen
                    Cool, das scheint mit dem "array" zu funktionieren. Leider ist die Anzahl der Schleifen von einer Variablen abhängig. Wie kann ich das Array mit einer Variable definieren?
                    • Morris_Hanson
                    • vor 7 JahrenSun, September 10, 2017 at 1:21 PM UTC
                    • Gemeldet - anzeigen
                    Hello Ninox Gemeinde! Hat jemand eine Idee.. Würde gerne per Datum und Location die passende Mondphase errechnen. Ginge das mit einer Formel?
                    Danke im Voraus, Rene
                    • Birger_H
                    • vor 7 JahrenMon, September 11, 2017 at 5:30 AM UTC
                    • Gemeldet - anzeigen
                    Hallo Rene,
                    du brauchst dazu die Länge der Mondphase (ca. 29,53 Tage) und einen Startpunkt (z.B. dieser Vollmond in Berlin: 6. September 2017, 09:02:49 Uhr).

                    Gruß
                    Birger - Ninox Support
                    • Birger_H
                    • vor 7 JahrenTue, September 12, 2017 at 10:19 AM UTC
                    • Gemeldet - anzeigen
                    Bitte lassen Sie mir die konkrete Anforderung doch einmal per Mail zukommen - an support@ninoxdb.de

                    Birger - Ninox Support
                    • Ninox Premiumpartner
                    • Bastian_Vorholt
                    • vor 7 JahrenThu, September 21, 2017 at 5:26 PM UTC
                    • Gemeldet - anzeigen
                    Wie nutze ich die Pop up Funktion oder open record. Ich will ein Angebot in ein Vertrag umwandeln das macht er auch soweit er soll aber nach anklicken des Buttons Angebot in Vertrag umwandeln den aktuellen Datensatz auch öffnen. Hatte gedacht es würde so gehen
                    openRecord(record(Vertrag,Nr))
                    • Morris_Hanson
                    • vor 7 JahrenFri, September 22, 2017 at 2:04 AM UTC
                    • Gemeldet - anzeigen
                    Würde gerne eine Uhrzeit im viertelstundentakt auf oder abrunden.. geht sowas?
                    z.B 12:03 ->12:00, 14:08 -> 14:15, 20:36 -> 20:30...
                    Danke!
                    • Birger_H
                    • vor 7 JahrenFri, September 22, 2017 at 6:12 AM UTC
                    • Gemeldet - anzeigen
                    Ja, das ist möglich. Diese Formel gibt als Ergebnis den gerundeten Zeit-Wert zurück :
                    –––
                    time ( round ( number ( 'Ein Zeit-Feld' ) / ( 60000 * 15 ) ) * ( 60000 * 15 ) )
                    –––

                    Birger - Ninox Support
                    • schocki
                    • vor 7 JahrenFri, September 22, 2017 at 6:57 AM UTC
                    • Gemeldet - anzeigen
                    Hallo Ninox Team.

                    Wann wird es eine überarbeitete Dokumentation zur Script Sprache geben?
                    Soweit ich weiß sind jetzt z.B. "while loops" und "order by" möglich, aber wie genau wird es angewandt ?

                    MfG schocki

                                        Content aside

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