And so, the final release of Active Query Builder for Delphi is out. We received a lot of positive feedback, but, of course, we won't stop half-way. There are many things to do.
Here are some features that we will surely implement in future versions:
But this is not a good reason to postpone the purchase. Don't forget that according to our upgrade policy, registered users receive all updates free of charge!
» permanent address of this storyOne of our users notified us about interesting results he had got. He tested the component and found out that the parser speed is much lower in version 0.9.9 as compared to 0.9.8. But he hasn't noticed that the amount of memory needed to parse the query reduced from tens of megabytes to a hundred of kilobytes! The point is that we implemented garbage collection during the parsing process. It made parsing slightly slower but significantly reduced the amount of memory needed.
By the way, having optimized the parser for version 1.0, we managed to achieve both good-enough speed and low memory spend.
» permanent address of this storyMany visitors of our site want to know when the .NET version of our component will be released. Of course, we are eager to release it, but we are committed to the users of our current product. That's why we first ought to improve functionality and robustness of Active Query Builder for Delphi to the adequate level. Only then we could undertake another project. We are planning to release initial beta-versions of Active Query Builder for .NET in December if nothing extraordinary prevents us from doing this.
» permanent address of this storyFinally the development of our component is in its final stage and it is already possible to determine the list of the features to be included into the Standard Edition of the final version of Active Query Builder. They are:
To decide whether such a component as ours is worth using, it is not enough to have a demo application. It is important for a programmer to try the component itself, to feel whether it is easy to integrate it with his application, to see how it will conform with the rest of the application, therefore, it is necessary to have a trial version. But the disadvantages of the trial version are well-known: annoying messages that you use an unregistered copy of the component that cause the strong desire to get rid of them, and not always the way the developers of the component want it to be ;-)
On the other hand, we would like our component to be as widely used as possible: at colleges, universities and so on, but to achieve this goal our component should become free. Unfortunately, it is impossible for us, that's why we came up with a compromise variant. We'll create the freeware version of the component, limited in functionality.
From our point of view, the absence of support for various SQL dialects will render the free version useless for any commercial purpose.Thus only the ANSI-92 dialect parser will be included into the free version. We decided to leave the visual building module with the possibility of building queries with unions and subqueries fully-functional. By the way, the RTF and HTML output filters will not be included into the free version. However, the possibility to embed the SynEdit component will be, and it is more than enough for a non-commercial project.
Certainly, this solution is not the only one possible, and we are ready to discuss it if you want to.
The MySQL parser is ready.
» permanent address of this storyNow matter how easy and convenient it would be to create SQL queries visually, there is always a need to edit the query text; therefore we could not ignore the need for a text SQL editor. On the one hand, it would be rather interesting for us to make this component ourselves, but on the other hand, it doesn't make sense to reinvent the wheel for today there are enough SQL editors in the market - both free and commercial. Actually it depends on your feedback whether we will create our own SQL editor in the future or not, but as for today it will only prevent us from reaching our goal.
However, we ought to offer a variant to the users of our component, even to create a demo. We have decided in favor of a well-known freeware component, namely SynEdit (http://synedit.sourceforge.net/). SynEdit is an advanced multi-line edit control for Borland Delphi and C ++ Builder. It supports Syntax Highlighting, Code Completion and many other nice features. With its help we shall be able to create the complete demo application that will allow users to build SQL queries either visually or manually, and of course to execute them.
The CoCo/R's ability to look ahead a single token turned out to be insufficient to resolve all ambiguities of SQL code. The LL(2) parser generator was able to resolve 97% of ambiguities. It turned out that the parser had to scan ahead 7 tokens to parse the code correctly. Thus, we made another improvement: now our parser generator is not LL(1) but LL(k)!
» permanent address of this storyToday we understood why we couldn't find a Query Builder that supported visual building of subqueries and unions: it's not an easy task to keep it clear and simple while giving him the ability to visually build all of these. ;-)
» permanent address of this storyThe MS SQL parser is ready. Now it is able to parse any SQL expression supported by MS SQL Server!
» permanent address of this storyWhen making the parser we ran into some problems. It had been decided to use CoCo/R, a free open source LL(1) parser/scanner generator as the tool for code generation. Originally CoCo/R was not able to generate the Object Pascal code, so we had to improve it.
» permanent address of this storyOnce we needed a Query Builder component for Delphi with the following functionality:
We didn't find such a component on the software market and decided to create our own Query Builder.
We certainly realized that in case of a commercial component users expected something more than the support of a single SQL dialect and a single variant of appearance - that is why we decided to enrich its functionality. Finally the project looks like this:
Well, these are just dreams.We'll see what they will turn into... :)
» permanent address of this storyAutomatic Joins Creation
Active Query Builder automatically determines relationships between tables and creates appropriate joins for them.
Different Join Types
Active Query Builder allows to define different join types and various server-specific query options visually.
Grouping, Sorting and Criteria
Active Query Builder allows to define grouping, sorting, and constructing criteria in a simple and direct way.
Unions and Sub-Queries
Unions, sub queries and derived tables can be accessed and built visually in Active Query Builder as easy as the main query.