Re: New gda-report



Rodrigo Moya escribió:
> 
> Carlos Perelló Marín wrote:
> >
> > I have one problem before i can start to implement some thing useable.
> > What i can do to refer in my DTD the "Field" as an XML-QUERY? i mean,
> > when in a report i refer to a database field, or query i want (well i
> > MUST do it) use a gda-xml-query object. I suppose that it will be at the
> > XML tree like a node and when i find it i will call the gda-xml-query to
> > work with it, but how i could represent it at gda-report's DTD?
> >
> I don't know about how to represent it in the DTD. Maybe there is a way
> for refering to an external DTD, and have some nodes be the root node of
> those DTDs? There is a mailing list about the libxml lib, so you may ask
> all these questions there.


Ok, i will do it :-D

> 
> > P.S.: Well i have in my hands a book about Crystal Reports, do you thing
> > that in this summer we could implement the gda-report with almost the
> > 50% of the functionality that Crystal Reports have?. Please help!!!!!
> >
> Well, if I'm not wrong, these are the steps you may take:
> 
> * report-desing: there should be complete programmatic control for this
> Gda_Report object, so that the GnomeDbReport widget can be easily coded
> to let design the report visually. Thus, other 'viewers' could be
> implemented easily (for example a non-GNOME-dependant one).
> 

Well this is an special draw program that generates the .report files
(xml) that the gda-report will use to represent the database contents,
isn't it?

> * execute the report: for this, I would create a set of GTK signals, so
> that the Gda_Report can notify a possible report output viewer (the
> GnomeDbReport widget we talked about) about what is being done. So, for
> example:
>         "start_document" -> initialize printer, ...
>         "end_document" -> to finish the document
>         "print_line"
>         "print_field"
>         "new_line"
>         ... and many more
>   thus, the Gda_Report only knows about the organization of the report,
> and it is the viewer that 'actually' represents the output.
> When you execute the report, you must use the gda-client lib API. So, I
> would add a gda_report_run function, to which you pass a Gda_Connection
> object from which to take the data.
> 
> * get the data from the database: this is quite easy. Vivien has added
> some useful methods to the Gda_XmlQuery object, The first one is
> gda_xml_query_new_from_node(), which lets you create a Gda_XmlQuery from
> a node in your report file (although as I said, I don't know how you
> reference this in the DTD). Then, you can call
> gda_xml_query_get_standard_sql if the provider supports SQL (you can ask
> about this with the gda_connection_supports() function), or send the
> query in plain XML to the provider if it does not support SQL. As Vivien
> says in the gda-xml-query.h file, every provider should implement its
> own gda_*_connection_xml_query_to_sql(), so this will be one of the
> first new additions to the IDL files.
> Coding this will just be:
>         Gda_Report*    report;
>         Gda_Recordset* recset;
>         gchar*         command;
>         Gda_XmlQuery*  query;
>         ......
>         query = gda_xml_query_new_from_node(...);
>         if (gda_connection_supports(report->cnc, GDA_Connection_FEATURE_SQL))
>           {
>             command = gda_xml_query_get_standard_sql(query); // or call
> provider's specific
>             recset = gda_connection_execute(report->cnc, command, NULL, 0);
>           }
>         else
>           {
>              recset = gda_connection_execute_xml_query(report->cnc, query);
>           }
>         if (recset)
>           {
>             /* traverse the recordset, and emit signals as needed */
>             ....
>           }
> You can start by implementing the case where the provider supports SQL
> (which right now is always TRUE) since you need nothing added to the
> current CVS sources.
> 
> So, to make all this work, things to do:
> * code the GnomeDbReport widget at the same time we go further with
> Gda_Report. This widget will be the part talking directly with
> gnome-print. Carlos, if you know GTK/GNOME programming and want to do
> it, just say it, but if not, I'll do it myself.

He,he i'm learning this kind of programming. At the moment i have
programed the hispafuentes's application to proces the facturation with
the gnome-libs and the gnome-print, i hope i will make it :-), but i
will tell you if i have some trouble.

> * add xml_query related methods to the IDL files: again, I prefer to
> wait until the postgres provider is ported to the gda-server lib. This
> includes xml_query_to_sql, exec_xml_query, and (maybe?) sql_to_xml_query
> 
> i am right now busy on making the debian packages work (BTW, thanks
> publicly to Akira TAGOH, who has done all the work), but as soon as
> they're ok, I'll make a release and we'll concentrate on making all the
> XML stuff work (Gda_XmlQuery, Gda_Report/GnomeDbReport, and
> Gda_XmlDatabase, for the database designer and import/export stuff).
> 
> I've added your code to the gda-clnt directory, since I haven't seen the
> point in including it in gda-common. What use may providers make of the
> Gda_Report class?
> 


I don't know i have use this location because Vivien use it.

> And Carlos, from now on, as you've got already a CVS account, just
> commit directly instead of sending the code. But as I've said other
> times, don't touch in a place you are not sure about, please!
> 

Ok. I have send it here because i don't know the gnome-db's developers
procedures.

> Cheers

-- 
Carlos Perelló Marín
carpema@hispalinux.es
http://TorresQuevedo.hispalinux.es
http://nulies.hispalinux.es
http://www.Hispalinux.es
Valencia - España




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]