Watch, Follow, &
Connect with Us

For forums, blogs and more please visit our
Developer Tools Community.


Welcome, Guest
Guest Settings
Help

Thread: Popular database components?



Permlink Replies: 31 - Last Post: Apr 20, 2016 4:27 AM Last Post By: SQL Daddy
Sergey Tkachenko

Posts: 93
Registered: 5/15/01
Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 19, 2016 6:41 AM
Hi,

We are finishing creating new reporting VCL components, and we want to
implement support for popular database component sets.
Of course, we implemented support for DB components shipped with Delphi
(dbExpress, ADO, IB, FireDAC, Mongo, BDE), but we also want to implement
support for popular thirdparty components.

I'll appreciate answers both from users of DB components and from their
developers.

Components are not necessary need to be TDataSet-based, and not necessary
SQL-based. If they can process some data query and return some cursor object
in return, it's enough.

Please answer by replying to this message or in the topic:
http://www.trichview.com/forums/viewtopic.php?t=7234

-- Sergey Tkachenko
http://www.trichview.com
svt@trichview.com

Adem Meda

Posts: 495
Registered: 12/28/98
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 19, 2016 10:03 AM   in response to: Sergey Tkachenko in response to: Sergey Tkachenko
Sergey Tkachenko wrote:

We are finishing creating new reporting VCL components, and we want to
implement support for popular database component sets.
Of course, we implemented support for DB components shipped with Delphi
(dbExpress, ADO, IB, FireDAC, Mongo, BDE), but we also want to implement
support for popular thirdparty components.

Personally, I have come to hate BDE as it is a lot of pain to setup under the
recent versions of Windows. I am not saying it should be ecluded but it
definitely must not be the prime (or fall back) one in the demos.

I'd like to suggest that you add TDBF. It is quite stable, and is available in
source form for almost all versions of Delphi and it is free in almost all
senses of the word.

https://sourceforge.net/projects/tdbf/
https://github.com/codedeep/tdbf

You could also add that TXQuery which does a good job of turning non-SQL
databases into SQL complient one.

https://github.com/ccy/txquery
Sergey Tkachenko

Posts: 93
Registered: 5/15/01
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 20, 2016 9:43 AM   in response to: Adem Meda in response to: Adem Meda
Thank you for your suggestions.

I'd like to suggest that you add TDBF. It is quite stable, and is
available in
source form for almost all versions of Delphi and it is free in almost all
senses of the word.

As I can see, TDBF provides only a "table" component, and it does not have
"query" components, so I cannot use it to process data queries.

You could also add that TXQuery which does a good job of turning non-SQL
databases into SQL complient one.

I tried to use TXQuery with TDBF, just added it on TDBF demo main form.
May be I overlooked some property settings, but it looks like TXQuery cannot
work with BLOB fields properly: while it correctly displayed TITLE (string)
field, it returned the same value of DESCR (RTF blob) for all records.
I am afraid we cannot use it as it is.

-- Sergey Tkachenko
http://www.trichview.com
svt@trichview.com

Quentin Correll


Posts: 2,412
Registered: 12/1/99
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 19, 2016 7:10 PM   in response to: Sergey Tkachenko in response to: Sergey Tkachenko
Sergey,

| Please answer by replying to this message

I personally exclusively use NexusDB.

--

Q -- XanaNews 1.19.1.372 - 2016-03-19 19:09:27
Sergey Tkachenko

Posts: 93
Registered: 5/15/01
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 20, 2016 9:53 AM   in response to: Quentin Correll in response to: Quentin Correll
I personally exclusively use NexusDB.

NexusDB is added, thanks to NexusDB team for help

-- Sergey Tkachenko
http://www.trichview.com
svt@trichview.com

Roy Lambert

Posts: 1,063
Registered: 8/7/01
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 20, 2016 12:23 AM   in response to: Sergey Tkachenko in response to: Sergey Tkachenko
Sergey

ElevateDB & DBISAM

Roy Lambert

Ian Branch

Posts: 442
Registered: 9/23/99
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 20, 2016 1:46 AM   in response to: Roy Lambert in response to: Roy Lambert
+1
Matthew Jones

Posts: 337
Registered: 1/25/98
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 21, 2016 1:55 AM   in response to: Ian Branch in response to: Ian Branch
+1
Sergey Tkachenko

Posts: 93
Registered: 5/15/01
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 21, 2016 11:58 AM   in response to: Matthew Jones in response to: Matthew Jones
Thank you all!

ElevateDB and DBISAM are added
(you can see a screenshot of our test - a master-detail report using DBISAM
demo base of music albums:
http://www.trichview.com/support/forumimages/rw/preview/dbisam_demo.png )

-- Sergey Tkachenko
http://www.trichview.com
svt@trichview.com

Sergey Tkachenko

Posts: 93
Registered: 5/15/01
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 20, 2016 1:46 PM   in response to: Roy Lambert in response to: Roy Lambert
ElevateDB & DBISAM

Thank you for pointing to them, we are working to add their support.

(one of tests: we took their jpegblobdemo and added a report to it,
displaying images in 3 columns scaled down .
You can see the result:
http://www.trichview.com/support/forumimages/rw/preview/ElevateDB_Jpeg_Report.png
)

-- Sergey Tkachenko
http://www.trichview.com
svt@trichview.com

Roy Lambert

Posts: 1,063
Registered: 8/7/01
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 20, 2016 11:23 PM   in response to: Sergey Tkachenko in response to: Sergey Tkachenko
Sergey

(one of tests: we took their jpegblobdemo and added a report to it,
displaying images in 3 columns scaled down .
You can see the result:
http://www.trichview.com/support/forumimages/rw/preview/ElevateDB_Jpeg_Report.png
)

Pretty

Roy

Uffe Kousgaard

Posts: 218
Registered: 2/7/00
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 20, 2016 1:09 AM   in response to: Sergey Tkachenko in response to: Sergey Tkachenko
Sergey Tkachenko wrote:


Please answer by replying to this message or in the topic:
http://www.trichview.com/forums/viewtopic.php?t=7234

Devarts UniDAC
Sergey Tkachenko

Posts: 93
Registered: 5/15/01
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 20, 2016 9:53 AM   in response to: Uffe Kousgaard in response to: Uffe Kousgaard
Devarts UniDAC

Done

-- Sergey Tkachenko
http://www.trichview.com
svt@trichview.com

Roberto Icardi

Posts: 4
Registered: 7/7/01
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 23, 2016 3:38 AM   in response to: Uffe Kousgaard in response to: Uffe Kousgaard
I'll better say Devart xDAC (pgDAC, oDAC, etc etc)

"Uffe Kousgaard" ha scritto nel messaggio
news:837775 at forums dot embarcadero dot com...

Sergey Tkachenko wrote:


Please answer by replying to this message or in the topic:
http://www.trichview.com/forums/viewtopic.php?t=7234

Devarts UniDAC
Aage Johansen

Posts: 23
Registered: 9/27/00
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 20, 2016 12:40 PM   in response to: Sergey Tkachenko in response to: Sergey Tkachenko
On 19.03.2016 14:41, Sergey Tkachenko wrote:
Hi,

We are finishing creating new reporting VCL components, and we want to
implement support for popular database component sets.
Of course, we implemented support for DB components shipped with Delphi
(dbExpress, ADO, IB, FireDAC, Mongo, BDE), but we also want to implement
support for popular thirdparty components.

Some Interbase and Firebird users (like me!) use IBObjects.
There are TDataset-based components in addition to "native" ones.

--
Aage J.
Sergey Tkachenko

Posts: 93
Registered: 5/15/01
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 23, 2016 5:15 AM   in response to: Aage Johansen in response to: Aage Johansen
Some Interbase and Firebird users (like me!) use IBObjects.
There are TDataset-based components in addition to "native" ones.

Thank you!
I added IBObjects (using TIBOQuery)

-- Sergey Tkachenko
http://www.trichview.com
svt@trichview.com

Vladimir Ulchenko

Posts: 248
Registered: 1/12/00
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 21, 2016 3:11 AM   in response to: Sergey Tkachenko in response to: Sergey Tkachenko
On Sat, 19 Mar 2016 06:41:58 -0700, Sergey Tkachenko <svt at trichview dot com> wrote:

Of course, we implemented support for DB components shipped with Delphi
(dbExpress, ADO, IB, FireDAC, Mongo, BDE)

is rather vague description

the following excerpt from the link you provided:
"We implemented components reading data from FireDAC, ADO, BDE, and some other set of DB components"

also doesn't tell whether say cds is supported or not

--
Vladimir Ulchenko aka vavan
Sergey Tkachenko

Posts: 93
Registered: 5/15/01
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 21, 2016 10:58 AM   in response to: Vladimir Ulchenko in response to: Vladimir Ulchenko
is rather vague description

the following excerpt from the link you provided:
"We implemented components reading data from FireDAC, ADO, BDE, and some
other set of DB components"

Well, I am not sure what's the question, but I can explain what we have.
Report Workshop is a word-processing template-based reporting tool. Report
templates may contain data query strings associated with the whole document,
ranges of table rows, table cells, ranges of columns (for cross-tab
reports).
After preprocessing (replacing data fields, report variables and functions
to their values), data queries are passed to "data provider" that returns
"query processor" to process this query.
In the most typical case, "query processor" is a wrapper for a query-type
TDataSet, i.e. it processes a query in some language (such as SQL or JSON)
and returns a set of records.
(However, it’s not necessary TDataSet-based. For example, we added a
calendar "query processor" returning months, days in month and so on; or
it's possible to implement a "query processor" querying a file system, etc.)

It sounds more complicated than it's actually is (especially for end-user).
The user just need to place a report generator and a data provider
components on a form and link them together.
We are creating data providers for different component sets so that users do
not
need writing code to assign properties to TDataSet components, and to
initialized them in the most efficient way (for a read-only unidirectional
(but multi-pass) use).

also doesn't tell whether say cds is supported or not

TClientDataSet?
Probably, we will not create a special "data provider" component for it.
But we have a general TDataSet "data provider" requesting datasets in an
event.
Assuming that data queries are not SQL, but simple file names, a code would
be:

procedure TForm1.RVReportDBDataProvider1CreateDataSet(
Sender: TRVReportDBDataProvider; const DataQuery: TRVUnicodeString;
var DataSet: TDataSet);
begin
DataSet := TClientDataSet.Create(nil);
TClientDataSet(DataSet).FileName := DataQuery;
end;


-- Sergey Tkachenko
http://www.trichview.com
svt@trichview.com

Vladimir Ulchenko

Posts: 248
Registered: 1/12/00
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 22, 2016 2:32 AM   in response to: Sergey Tkachenko in response to: Sergey Tkachenko
On Mon, 21 Mar 2016 10:58:02 -0700, Sergey Tkachenko <svt at trichview dot com> wrote:

Well, I am not sure what's the question, but I can explain what we have.

the question was whether clientdataset is supported or not

In the most typical case, "query processor" is a wrapper for a query-type
TDataSet, i.e. it processes a query in some language (such as SQL or JSON)
and returns a set of records.

I prefer dataset-centric approach so other components/libs just "connect"/link to datasource/dataset without the need to know underlying
database backend/storage details

TClientDataSet?
Probably, we will not create a special "data provider" component for it.
But we have a general TDataSet "data provider" requesting datasets in an
event.
Assuming that data queries are not SQL, but simple file names, a code would
be:

procedure TForm1.RVReportDBDataProvider1CreateDataSet(
Sender: TRVReportDBDataProvider; const DataQuery: TRVUnicodeString;
var DataSet: TDataSet);
begin
DataSet := TClientDataSet.Create(nil);
TClientDataSet(DataSet).FileName := DataQuery;
end;

I'm afraid without delving into reporting library details that sample above doesn't explain well how it is intended to work, what is
DataQuery and why it is assigned to FileName property

anyway thanks for your answer and I'll take for granted your words that it should support any generic dataset

--
Vladimir Ulchenko aka vavan
Sergey Tkachenko

Posts: 93
Registered: 5/15/01
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 22, 2016 10:55 AM   in response to: Vladimir Ulchenko in response to: Vladimir Ulchenko
Well, this topic is not exactly about introducing our product, I am not
completely ready to do it.
This kind of things should be introduced in examples, because actually it is
very simple and explanations are too long. But we do not have examples yet.
Ok, I can show two examples that we made while implementing support for DB
components suggested in this topic.

Template:
http://www.trichview.com/support/forumimages/rw/preview/tutorial/template1.png
As you can see, this is a word processing document with a table, some table
fragment is associated with a SQL query.
Result:
http://www.trichview.com/support/forumimages/rw/preview/tutorial/result1.png
This fragment is copied in columns, new rows are generated when necessary,
fields are replaced to the results of the query.

Queries can be nested:
Template:
http://www.trichview.com/support/forumimages/rw/preview/tutorial/template2.png
Result:
http://www.trichview.com/support/forumimages/rw/preview/tutorial/result2.png
This example has one level of nesting, but actually it is unlimited, since
tables can be inserted in tables.

We need something to execute these SQL queries. What's why I created this
topic.
I cannot just link our report generator with TDataSet component, because:
- we need unknown number of TDataSets, since queries are nested; so we
create them dynamically;
- there are no standards how TDataSet processes SQL;
- queries may be not in SQL, but in an arbitrary language.
For example, TClientDataSet does not support SQL, and data can be requested
by specifying FileName, am I right?

So we have components providing data for specific DB components, and they
are more higher level than TDataSet. They just process queries for report,
it's not so important for the user how they do it.
Or we have an universal DB data provider, where you can return TDataSet in
an event.
Or data can be retrieved not from a database at all.

-- Sergey Tkachenko
http://www.trichview.com
svt@trichview.com

Vladimir Ulchenko

Posts: 248
Registered: 1/12/00
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 23, 2016 12:41 AM   in response to: Sergey Tkachenko in response to: Sergey Tkachenko
On Tue, 22 Mar 2016 10:55:09 -0700, Sergey Tkachenko <svt at trichview dot com> wrote:

Well, this topic is not exactly about introducing our product, I am not
completely ready to do it.

sure, no problem with that

We need something to execute these SQL queries. What's why I created this
topic.

not to accuse something I never seen but I believe properly designed reporting lib should be able to get the data from datasets without even
resorting to sql layer as few existing do

I cannot just link our report generator with TDataSet component, because:
- we need unknown number of TDataSets, since queries are nested; so we
create them dynamically;

if linked to existing datasets (including nested and/or detail parameterized ones) supplied by end user you won't need to create queries
dynamically, just (re-)open those

- there are no standards how TDataSet processes SQL;

as already mentioned existing reporting engines can work without directly using/processing sql

- queries may be not in SQL, but in an arbitrary language.

all the more reason to stick with datasets that can provide their data not only from database with sql support but from arbitrary data
sources

For example, TClientDataSet does not support SQL, and data can be requested
by specifying FileName, am I right?

in fact it does support SQL via CommandText property but it is rather for backward compatibility, intended for porting older applications
and/or for some specific use cases and better be avoided

So we have components providing data for specific DB components, and they
are more higher level than TDataSet. They just process queries for report,
it's not so important for the user how they do it.

similar to say frxDataset linked to conventional dataset so FR doesn't really need to know anything about underlying database with its sql
queries at all

Or we have an universal DB data provider, where you can return TDataSet in
an event.
Or data can be retrieved not from a database at all.

of course it's up to you but I believe the more approaches you support the better chances you'll succeed attracting prospective customers

anyway thanks for your explanations

--
Vladimir Ulchenko aka vavan
Sergey Tkachenko

Posts: 93
Registered: 5/15/01
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 23, 2016 2:22 AM   in response to: Vladimir Ulchenko in response to: Vladimir Ulchenko
Thank you for your thoughts. You are absolutely right, there must be a way
to link existing datasets and to query them, without writing additional
code in events, and without using SQL.
We will add DataSets property to our universal DB provider, a collection of
(Alias: String; DataSet: TDataSet) pairs. If a data query = alias, the
corresponding dataset will be used. If these datasets have a master-detail
relationship, it will be used automatically.

-- Sergey Tkachenko
http://www.trichview.com
svt@trichview.com

Vladimir Ulchenko

Posts: 248
Registered: 1/12/00
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 23, 2016 2:51 AM   in response to: Sergey Tkachenko in response to: Sergey Tkachenko
On Wed, 23 Mar 2016 02:22:53 -0700, Sergey Tkachenko <svt at trichview dot com> wrote:

Thank you for your thoughts. You are absolutely right, there must be a way

glad you've found those useful
looking forward to your announcement about new reporting lib

--
Vladimir Ulchenko aka vavan
Matthew Jones

Posts: 337
Registered: 1/25/98
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 23, 2016 3:21 AM   in response to: Sergey Tkachenko in response to: Sergey Tkachenko
Sergey Tkachenko wrote:

If these datasets have a master-detail
relationship, it will be used automatically.

FWIW, I often have multiple reports with at least three levels of
master detail, so you need (if you want of course - the majority might
not need it!) to support depth. One of my reports has a master, then a
main detail, and then sections for 4 sub-details for each main detail.
IIRC, one of the sub-details has a further sub-sub-detail.

I like the look of where you are going so far...
Sergey Tkachenko

Posts: 93
Registered: 5/15/01
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 23, 2016 3:55 AM   in response to: Matthew Jones in response to: Matthew Jones
FWIW, I often have multiple reports with at least three levels of
master detail, so you need (if you want of course - the majority might
not need it!) to support depth. One of my reports has a master, then a
main detail, and then sections for 4 sub-details for each main detail.
IIRC, one of the sub-details has a further sub-sub-detail.

It’s not a problem. In Report Workshop, master-detail relationships are
established for nested content.
For example, master can be associated with the whole document, details with
a group of table rows, sub-details with a cell in this row, sub-sub-details
with a group of table rows for a table nested in this cell, and so on,
without limitations.
(here, "table" means a word processing table, not a DB table)
Every table cell is a document by its own, that can contain fields,
graphics, controls, etc., so we do not need to invent special objects to
represent sub-reports.

I like the look of where you are going so far...

Currently, we completed code (except for making data providers for popular
third-party DB components) and documentation.
But we do not have meaningful demo projects, packages for all versions of
Delphi, and installers.
I can publish the help file, but I believe that it would be better to start
introduction to the product from demo projects.

To avoid spamming this forum with details, I think it would be better to
continue this discussion not here. I will gladly answer to questions by
email or on the forum http://www.trichview.com/forums/viewforum.php?f=26

-- Sergey Tkachenko
http://www.trichview.com
svt@trichview.com

Vladimir Ulchenko

Posts: 248
Registered: 1/12/00
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 25, 2016 12:57 AM   in response to: Sergey Tkachenko in response to: Sergey Tkachenko
On Wed, 23 Mar 2016 02:22:53 -0700, Sergey Tkachenko <svt at trichview dot com> wrote:

to link existing datasets and to query them, without writing additional
code in events, and without using SQL.

forgot to mention that if you really need to execute sql query against dataset you may want to use IProviderSupport.PSExecuteStatement

--
Vladimir Ulchenko aka vavan
Arnaud BOUCHEZ

Posts: 143
Registered: 2/17/02
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 21, 2016 6:33 AM   in response to: Sergey Tkachenko in response to: Sergey Tkachenko
Sergey Tkachenko wrote:
For open source components, ZDBC/ZEOS is amazing, and highly maintained.
See http://zeoslib.sourceforge.net/

You may consider our Open Source SynDB components - but they are more low-level.
See http://synopse.info/files/html/Synopse%20mORMot%20Framework%20SAD%201.18.html#TITL_126
Sergey Tkachenko

Posts: 93
Registered: 5/15/01
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 21, 2016 10:46 AM   in response to: Arnaud BOUCHEZ in response to: Arnaud BOUCHEZ
You may consider our Open Source SynDB components - but they are more
low-level.
See
http://synopse.info/files/html/Synopse%20mORMot%20Framework%20SAD%201.18.html#TITL_126

Oh... Your FAQ question #1 is my question #1 as well )))
But I can see you have a TQuery emulation, so I may try using it. But may be
not in the first release of Report Workshop.

-- Sergey Tkachenko
http://www.trichview.com
svt@trichview.com

George Winkler

Posts: 41
Registered: 5/10/05
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 21, 2016 1:37 PM   in response to: Sergey Tkachenko in response to: Sergey Tkachenko
I have been using Absolute which is very easy to use for a long time. Does have SQL. Always works. Check it at http://www.componentace.com/

George
Bernd Maierhofer

Posts: 161
Registered: 9/27/99
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 22, 2016 12:44 AM   in response to: George Winkler in response to: George Winkler
+1

"George Winkler" wrote in message news:838131 at forums dot embarcadero dot com...

I have been using Absolute which is very easy to use for a long time. Does
have SQL. Always works. Check it at http://www.componentace.com/

George
Sergey Tkachenko

Posts: 93
Registered: 5/15/01
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Mar 22, 2016 1:34 AM   in response to: Bernd Maierhofer in response to: Bernd Maierhofer
Thank you!

Actually, Absolute Database was the first data provider implemented for
Report Workshop.
RW is started from a demo project that I created on request from a customer
who used Absolute Database. Then I decide that this demo is worth releasing
as new component sets, it just need some improvements. Now, after about half
a year of a hard work, it is finally [almost] ready to release ))
ComponentAce team helped me a lot, I want to say thank to them.

-- Sergey Tkachenko
http://www.trichview.com
svt@trichview.com

SQL Daddy

Posts: 6
Registered: 4/8/16
Re: Popular database components?
Click to report abuse...   Click to reply to this thread Reply
  Posted: Apr 20, 2016 4:27 AM   in response to: Sergey Tkachenko in response to: Sergey Tkachenko
Hello

I am using some db component this is very useful , you can just visit https://zappysys.com/blog/ssis-loading-data-into-mongodb-upsert-update-delete-insert/

This is helpful .
Legend
Helpful Answer (5 pts)
Correct Answer (10 pts)

Server Response from: ETNAJIVE02