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
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
-
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.? -
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 -
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. -
Es fehlt die Möglichkeit Kommentare in den Skripten einzugegen. Gerade bei längeren und komplizierten Skripts wäre das echt hilfreich.
-
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 -
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') -
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? -
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 -
Hi Danke,
aber dabei erhalte ich die selbe Fehlermeldung: "Die Funktion ist nicht definiert: range(number,numer)" -
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) -
Vielleicht noch die Umgebung: Windows-Server 1.7.1.1; Browser: Firefox 55
-
In Ninox Server steht die Funktion "range()" noch nicht zur Verfügung.
Birger - Ninox Support -
und wie kann ich dann einen loop bauen?
-
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 -
ich will aber keinen select machen, sondern nur einen Schritt so lange wiederholen, bis eine bestimmte Anzahl erreicht wurde.
-
Versuchen Sie folgendes:
–––
for i in [1,2,3,4,5,6,7,8,9,10] do
i * i
end
–––
Birger – Ninox Support -
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?
-
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 -
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 -
Bitte lassen Sie mir die konkrete Anforderung doch einmal per Mail zukommen - an support@ninoxdb.de
Birger - Ninox Support -
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)) -
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! -
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 -
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 6 JahrenZuletzt aktiv
- 493Antworten
- 134671Ansichten