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 6 Jahren
    • 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 6 Jahren
    • 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 6 Jahren
    • 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 6 Jahren
    • 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 6 Jahren
    • 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 6 Jahren
    • 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 6 Jahren
    • 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 6 Jahren
    • 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 6 Jahren
    • Gemeldet - anzeigen
    Hi Danke,

    aber dabei erhalte ich die selbe Fehlermeldung: "Die Funktion ist nicht definiert: range(number,numer)"
    • Birger_H
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Bitte prüfen Sie Ihre Schreibweise. Hier ein kleines Beispiel:


    Birger - Ninox Support
    • fhs
    • vor 6 Jahren
    • 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 6 Jahren
    • Gemeldet - anzeigen
    Vielleicht noch die Umgebung: Windows-Server 1.7.1.1; Browser: Firefox 55
    • Birger_H
    • vor 6 Jahren
    • Gemeldet - anzeigen
    In Ninox Server steht die Funktion "range()" noch nicht zur Verfügung.

    Birger - Ninox Support
    • fhs
    • vor 6 Jahren
    • Gemeldet - anzeigen
    und wie kann ich dann einen loop bauen?
    • Birger_H
    • vor 6 Jahren
    • 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 6 Jahren
    • Gemeldet - anzeigen
    ich will aber keinen select machen, sondern nur einen Schritt so lange wiederholen, bis eine bestimmte Anzahl erreicht wurde.
    • Birger_H
    • vor 6 Jahren
    • 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 6 Jahren
    • 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 6 Jahren
    • 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 6 Jahren
    • 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 6 Jahren
    • 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 6 Jahren
    • 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 6 Jahren
    • 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 6 Jahren
    • 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 6 Jahren
    • 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 5 JahrenZuletzt aktiv
  • 493Antworten
  • 134615Ansichten