Valentina -- Reporting for LiveCode

Lynn Fredricks lfredricks at
Fri Dec 6 15:34:02 EST 2019

> I missed this message about Valentina and offer. Well, no problem.
> May I ask about the basic principle of Valentina database and 
> Valentina Reports for LiveCode?

Yes, and I will also cc to the list as these are good questions that others
may be interested in as well.

> I assume that the Report Engine is built on the SQL engine 
> and not into LiveCode itself?

There isn't actually a 'SQL engine' but a kind of language.

The Valentina ADK includes its own SQL interpreter that is highly optimized
C++ for speed. 

The Reporting portion works with most major databases: MS SQL Server, MySQL,
MariaDB, PostgreSQL as well as SQLite and Valentina DB. A report then passes
queries to database sources to pull in the data needed to populate the

> Years ago I personally met the original developer of 
> Valentina in Kherson in Ukraine. There are very smart people, 
> often mathematicians by university education, and highly 
> skilled in low-level programming, in C, C++, Assembler, and 
> whatever. I always thought that such people could be ideal 
> supporting the core of the LiveCode engine. I had good 
> experiences and very happy customers in Switzerland, USA and 
> elsewhere.

The team is very talented, thanks!

> So far I use LiveCode itself for printing reports. It is a 
> lot of work, but also it is getting the job done. Many pages 
> of reports can be created "on the fly" using as many cards as 
> there are pages to also be able to know page numbers and 
> programmatically format each page according to certain rules 
> with sub summaries and a grand summary. Also, this rendering 
> on each page allows for a good preview. It is something like 
> the DataGrid with details of varying height. After the report 
> is printed, all cards are deleted. But again, it is really 
> lot of work doing it well.

LiveCode is an excellent front end for so many different kinds of apps. Like
other tools, you can create a reporting system in it, as you can with other
tools. As with any tool though, and this includes historic examples of
solutions like FileMaker, there are many reasons why you might want to keep
your data and different renderings of data outside of your application

In regards to Valentina Reports though, there is a bit more to it.

- You can use Valentina Reports ADK to render a report in many formats,
including PDF, graphics, HTML and the like, using its own very fast,
compiled engine.

- You can upload a Valentina Project to Valentina Server and 'serve' the
report from there, and leverage other languages in the process. Valentina
Server is a very flexible and powerful solution that combines the following
'sub' servers:

Valentina Reports Server
Valentina DB Server (for our own ultra-fast database)
Valentina SQLite Server (our own implementation of SQLite so you can easily
upscale your SQLite apps to true client-server)
(New) Valentina Forms Server (more on that later if you want to know more)

For reports, you can use any of the external data sources mentioned as well
as the sub-server databases on the server, Valentina DB Server and Valentina
SQLite Server.

It is also possible to use our free Valentina Studio as a 'client' for
Valentina Reports (and Forms), making it possible to run a report, print it
to PDF and the like, without any ADK or Server. You can build reports in
Valentina Studio Pro and then share the resulting project with users of free
Valentina Studio. You can also build parameters into the report to give the
end user some flexibility in what is displayed within Studio.

> So, Valentina Report may be a better way. Another question: 
> Why should we use Valentina when we have SQLite?

There are a lot of different databases on the market, some of which are free
and others are not. We support SQLite with Valentina SQLite Server because
it is quite popular and it does what many need. In our experience, those
that do may eventually switch to Valentina DB once they figure out how it
would benefit them.

SQLite has its own multi-user system, but by itself it really isn't
optimized for it. It is sort of a logical way to add multi-user without
really having to build in what most multi-user databases support in terms of

We don't really feel a need to 'hard sell' Valentina DB to SQLite users as
SQLite has a more limited scope of use but is quite good for what it does.

Valentina DB is an object-relational database, built on its own highly
optimized, very fast core columnar database mechanism. What many do not
realize is that you can treat it much like any other SQL standard relational
database, because we support many different approaches to working with data.
Many that port to Valentina DB from something else, such as MySQL, can use
this methodology to do a quick porting (and then optimize later). It is jam
packed with features that appeal to different vertical markets. Among our
users there is a high number of medical and financial service companies that
use it because it is fast enough that they can make queries that would
otherwise take a very long time accessible very quickly. Imagine for
example, a query that can take hours to run on some other database. That is
too long to, say, run a scenario during a meeting with a client. Two
considerations that also come to mind to me right now in regards to
Valentina DB:

- While our technology is proprietary, you don't have your data 'locked in'
in a way that you can't get your data out of it without much pain
- Some customers even go so far as to use Valentina DB as a native file
format because of the efficiency of the storage

Ruslan may want to chime in with more detail and specific questions that are
beyond my scope of understanding.

Best regards,

Lynn Fredricks
Paradigma Software

More information about the use-livecode mailing list