I have been started a project called "MightyQuery" that is intended to be a MS Access alternative, written in Lazarus/FPC.
The idea was to create a simple MS Access-like software that would be able to query business data on the fly. Instead of using widespread open-source database engines that require either installing server either DLLs, I hoped to be able to do it in pure Lazarus/FPC, by using JanSQL component.
JanSQL is a pure pascal SQL database engine working with csv flat files. It is written by Jan Verhoeven (
www.jansfreeware.com) for Delphi and ported to Lazarus by Bee.
You can download the ported JanSQL from:
http://matalab.freehostia.com/laz-janSQL.zipThe idea was to use TDbf (for storing information about "databases", tables and saved queries), JanSQL (for querying), MemDataset (for data presentation and navigation) and CsvDataset (for direct editing of CSV files). Additionaly, external data would be imported by SqlDb into CSV tables on the fly, so that the program could mimicry querying of heterogeneous data sources. By the way, I think that this feature of heterogeneous querying is the biggest advantage of MS Access. In Access you can easily query tables from different sources (native mdb tables, Excel tables, CSV tables, tables from different ODBC connected tables). Possibly, information about changes would be sent back to external databases (synchronization). In future, scripting functionality (Pascalscript?), dynamic creation of reports and forms, visual query builder would be added.
Unfortunately, I'm stucked by a bug in JanSQL itself. The original Delphi JanSQL works correctly, but the ported JanSQL retrieves only one row when querying more than one table. I was looking at the code, but could not find the reason for this odd behavior.
Therefore, I'm stucked now with this bug(?) in laz-jansql...
I find jansql to be very interesting component for ad-hoc querying. A lot of business data is stored in flat files or can be easily exported to CSV files. Jansql has great potential for a fat-free database engine. And what is most important,
jansql is the only open-source SQL engine written in Pascal, so for the sake of Pascal language itself, it would be worthy to preserve it, possibly to improve it.
I would appreciate any help, especially if someone wish to investigate why laz-jansql incorrectly retrieves only one row in queries containing more than one table.
Regards,
Zlatko Matić (matalab@gmail.com)