VOLUME LXXVI               03/09/2021

Version 3.3.0 and Beyond


While Databasics usually focuses on developments inside the Ninox development platform, today we would like to take a few minutes to talk about the platform itself. With the upcoming release of version 3.3.0, we see yet another huge step forward in the capabilities and raw power of the Ninox system. More than that, we are witness to the ongoing development of a database application that has no equal in terms of value, flexibility and raw power.


One of the most profound new features coming in 3.3.0 is the ability to represent relational fields as more than a full-screen popup selection window. Now that we, as developers, can present related-table content as combo boxes, radio button pods, and selection ribbons, we are now able to deploy more elegant and streamlined user experiences.


For years, the global Ninox community has been asking for the ability to perform inline editing – the ability to view, edit and create content in one table from within the form of another. Berlin has delivered! The new Embed presentation of relational fields completely changes the way we envision, build and use Ninox-based applications


The days of having to clear one search term before searching based on another are over. Now, you can perform more refined searches in sequence using the Ninox search engine at both the database and table levels. This makes it even easier to find that field needle in the table haystack.


The ability to manage field content in memory in addition to being able to associate it with a record is yet another indication that Berlin listens to her customers. Global Variables? Check. Runtime content to make it easier to test applications? Check. Bindings are, to say the very least, a game changer.


We are all familiar with triggers and the amazing power they bring to the Ninox eco-system. Well now, Triggers have been added to the Tab screen element making it possible to automate workflow based on the opening and closing of separate pages within a table form.

Taken individually, each of these new features and functions represents a significant enhancement in the ability of Ninox to serve the needs of nearly every user and use-case. But taken as a whole, they are clear evidence that Ninox is not resting on its laurels and that its caretakers in Berlin are paying attention to the needs and requests of their user community. And that can only mean that the future of our beloved Ninox is rich and bright and certain to continue setting the standard of excellence in the market.

Nioxus' Newest Member

By Dorothy Worster, Media Manager

Please welcome Nioxus’ newest programmer and German translator, Chance Koogler.
Chance hails from Dayton, Ohio and is a student at The Ohio State University. He is majoring in GIS (Geographic Information Sciences) which is, essentially, the study of mapping technologies. Chance was initially a business major, but decided that wasn’t for him, and transitioned to a GIS major while teaching himself web development and coding. I had the opportunity to interview Chance about his technical career and experience:
What got you into tech/computer sciences in the first place?
It’s something I grew up with. I used to play video games a lot as a kid and I began learning about coding in order to be able to modify some video games, and because I was just curious about it. I never really coded as a kid, but I wanted to find ways to hack games. I would go online and find workarounds for the code, which sparked my interest in other types of coding, and I never really lost that interest. I wanted to major in business initially, but it just wasn’t for me, so I just jumped back into programming and really liked it.
Why did you choose a career in technology; what do you enjoy about being a programmer?
For me, technology is power. Humans have never before enjoyed anything like the power of technology and the freedom of the Internet and I feel it’s a privilege to be able to explore these cutting-edge capabilities. I feel as though my great great grandparents would kick me if I passed up on the chance to do things they could only dream about.
What coding languages do you know?
SQL, Javascript, Python, and related frameworks. Javascript was my first; I took a class on it at Ohio State before I began teaching myself.
How did you get into German?
I started learning it in middle school, and I have been fluent for eight years. Translating the Nioxus website has been a fun challenge in learning colloquialisms within the technical language.
What was it that made you want to begin your career at Nioxus Corporation?
Nioxus was the perfect blend of technology and consultancy. As much as I love coding, I also love personal interaction. I did not want my only work obligation to be to stare at a computer; I wanted to have a direct impact on people’s time and day. Being a good listener and helping others is so fulfilling and I knew Nioxus would allow me to help people by providing technical solutions to their challenges.
What are you most excited to accomplish in your first year out of university?
I am most excited to work on a real product that helps others be more productive. In my opinion, the goal of technology and innovation is to make people’s lives easier and people’s activities more efficient. As I start with Nioxus, I’d love to make progress in helping others get the most out of technology.
How are you liking Nioxus so far?
So far I love it! It feels like a good community of people that you can rely on.
How do you see technology playing a role in people’s lives in the next 3 – 5 years?
Every industry on Earth has been impacted by technology and I predict the line separating humanity and technology will become more and more blurred as we innovate. As long as we innovate in a responsible way, I see only good things from technological change in the future.
Tell me a bit about what you like to do for fun.
I am a very outdoorsy person, so I really like to go fishing and hiking. I’m also a motorcycle enthusiast so I like to work on bikes in my spare time as well!

“Nioxus bereitet sich darauf vor, eine deutsche Website, einen Newsletter und Support anzubieten, und ich freue mich sehr, ein Teil davon zu sein.”

-Chance Koogler

Ninox FormsPLUS is Coming Soon!

This Week in the Learning Lab

Don’t miss out on this week’s Learning Lab, where we’ll be discussing using the location field in Ninox and hosting an open Q&A! 

This week’s Learning Lab will be on the 11th at 12pm EST!

Check Out Our Templates

Did you know that Nioxus has built over 140 templates which are available to all Standard, Deluxe and Premier Nioxus members?

Ninox University YouTube Channel

Nioxus has created nearly 100 videos and over 200 hours of content teaching you how to use and optimize Ninox, as well as our supplementary products: CalendarPLUS, ReportsPLUS and DocumentsPLUS

Just Jim

By Jim Harris, Stargazer

It’s hard to say farewell, but this year’s Gold Star Redemption Month has ended. But never fear, any Gold Stars that you have will rollover to next year. Participation and attendance at the Ninox Learning Lab will replenish your stash of Gold Stars! Thank you all again for making our first year of the Gold Star Program a humongous success! For those of you that did redeem their Gold Stars, thank you and please enjoy your gift from us at Nioxus. Did you know that you can check how many Gold Stars that you have accumulated by going to our website and clicking Gold Star Hall of Fame?

Please note that after each of the Ninox Learning Labs every Thursday at 12:00pm EST, any Gold Star updates will take at least 24-48 hours.

As always, if anyone has a suggestion, an idea for the GSP or has a funny, techie cartoon or joke, please contact me directly at my email address at the bottom of my column.

I also want to extend a warm, personal welcome to Chance Koogler and Michael Sidenstick who have joined our Nioxus Family! This should add a burst of fresh, new ideas/designs and excitement to our team! It seems like only yesterday I was warmly welcomed to Nioxus. I had high expectations then, and I have never been disappointed.

Hoping to see you at the Learning Lab this Thursday! Love to all!

Jim (Stargazer)


Jim's Comic Strip Corner

click to view comic 

Solution Application

Compound Constraints

Constraints are one of those incredibly powerful and equally under-used features in Ninox that as soon as you understand how to use them, you wonder how you ever lived without them. In this remake of our original “Working with Constraints” template, we explore dynamic search constraints, repurposing text fields and a host of other tips and tricks that you’re going to love putting into your Ninox solutions.

Constraints make it possible for users to select from a group of related-table options that is curated based on that user’s choices at runtime. Compound Constraints take the power to and even higher level by enabling Ninox to curate the selections dynamically based on a variety of user choices and inputs. Examples of where Compound Constraints can be powerful additions include:

  • Selecting a tour guide from a list of options based on their availability, the date of their last assignment, whether or not they are a favorite or all of the above;
  • Selecting a teacher for a class based on their area of expertise, teaching experience, schedule of other classes, the schools where they teach or all of the above;
  • Selecting a particular automobile based on model, year, type, color, date of last use, country of origin or all of the above.


This week’s Template of the Week shows us how to enable Ninox to select once constraint from an unlimited number of options based solely on each unique user experience. Check it out and download it today from our Nioxus Member Portal.

Solution application can be found on member pages. Sign into the member portal to access solution applications.

Executing Javascript in Formula Fields

By Adam Davidson, Director of Product Management

The html() function allows HTML to be added to a formula field in Ninox.  With some knowledge of HTML, Javascript and CSS, the html() function opens up a whole world of possibilities for expanding Ninox.  This article focuses on how to add javascript into the html() function with script elements, and how to work around some potential stumbling blocks that come up in the process.

Triggering Javascript from a user action, like a button click, works exactly as you would expect.  Immediately executing Javascript (as soon as the formula field is rendered) without any user action takes a little trick outlined below.  

User Action Triggered Javascript

Inserting javascript that is triggered by a user interaction with html elements is straightforward.  The example of this in Figure A changes the text in a button once it has been clicked.

Notice that single quotes are used inside the html() function so as not to tell Ninox to end the string being passed into the html() function.  

Immediately Executed Javascript

In many cases it is necessary to execute Javascript as soon as the formula field is loaded, instead of executing once a user clicks a button or interacts with the page in some way.  For example, maybe you want to render an HTML graph using the data in your table. You would not want your users to have to press a button in order for the data to be retrieved and the graph to be rendered.  

For our purposes, let’s say you want to display the database ID, which you can grab from the url with Javascript.  Normally, we could do something like shown in Figure B.

This code will not retrieve the database ID.  Although the script element is added to the document, the Javascript is not executed.  This is because by the time our script element is added to the document, the browser’s Javascript runtime has already passed through the initial part of the execution phase where each line of javascript is executed one at a time, and has moved on to the event loop where Javascript is triggered by events.  

Fortunately, we can still execute the code right away by triggering the code from an “onload” event.  Onload functions can be attached to a handful of html element types (img, style, body and a few others), and execute once the html element’s contents have been loaded.  In Figure C, we add an onload function to a style element, since in most cases these will be necessary anyway to style html elements in the desired way.  

Now, the extracted database ID can be seen in the formula field as soon as the record is opened.  We have used the event generated when the style element is loaded to trigger our Javascript to be executed right away.  

		function changeText() {
			let myButton = document.getElementById('my_button');
			myButton.innerHTML = 'CLICKED';
	<button id='my_button' onclick='changeText()'>CLICK HERE</button>

Figure A.

	<div id='database_id_display'></div>
		let myDiv = document.getElementById('database_id_display');

		// these two lines get the window's url, then extract the
		// database id from the url
		let url = window.location.href;
		let dbId = url.split('database/')[1].split('/')[0];

		myDiv.innerHTML = dbId;

Figure B.

	<div id='database_id_display'></div>
	<style onload='executeRightAway()'>
		#database_id_display {
			border-width: 0px;
		function executeRightAway() {
			let myDiv = document.getElementById('database_id_display');
			let url = window.location.href;
			let dbId = url.split('database/')[1].split('/')[0];
			myDiv.innerHTML = dbId;

Figure C.

Copyright 2021 © All Rights Reserved.

All logos, trademarks and names are the protected property of Nioxus Corporation or their respective owners.

“Ninox,” “Ninox Database” and the blue Ninox owl eye logo are the property of Ninox Berlin and are used with permission.