DataDisctionary problem
There amiss about the UseDataDictionary settings in 7.03. Have a custom
dictionary builder which sets the field alias to consist of +
'-' + so that users can easily differentiate between the same
field name in different tables (hey, why isn't this standard?).
Setting the UseDataDictionary flag at design time contributed to a
significant report loading an overhead in 6.03 and still seems to in 7.03,
so I used to set it dynamically in the DesignerOnTabChange event if the
user went to the Data tab. However, even though inspecting the DataSetting
at runtime shows UseDataDictionary as true (ticked) when I look at my
list of fields in the Query Designer, they are not the Dictionary ones.
OK, so I live with the loading overhead and set UseDataDictionary at
design time. Now I open a report and everything works fine. I close the
report, open another one and its not using the dictionary, only this time
its because the UseDataDictionary has somehow been set to False! By who?
Lastly, on a slightly different point, I have added lots of new fields to
my tables and rebuilt the dictionary tables. I now want to add them to the
report. But sometimes the Query Designer makes them available in the field
list and sometimes it doesn't. If the latter then the only solution is to
remove the table I want refreshed and add it back again. Of course if the
table and other tables linked off it then these need adding again as well
:-(
Any ideas?
All the best ....
Paul Toms - Navigator Systems
#############################################################
Navigator Systems Ltd,
Network House,9 Rivers Street Place,
Julian Road, Bath, BA1 2RS,UK
Main Tel: +44 (0)7000 NAVSYS (628797)
Fax: +44 (0)7000 NAVFAX (628329)
Support Tel: +44 (0)7000 NAVTEC (628832)
E-mail Mailto:pault@navigator.co.uk
This discussion has been closed.
Comments
OK, I discovered one issue which is my fault: I had some old code turning
off UseDataDictionary in the OnHide event for the designer, which is why
it was losing its design time setting. Sorry about that one. However, my
other points still stand, namely:
1. Why is there so much overhead when using a dictionary. I have a 135kb
report (in a database) which takes 25 secs to load when the
UseDataDictionary is on, as opposed to about 4 sec when it is off
2. Why is my old technique for setting it a runtime to get over the above
no longer working?
3. Why are not all the new fields in tables visible in the query designer
until to remove a table and put it back? For some tables it works fine???
Paul
In article ,
1. The DataDictionary is optimized. However there will be initial overhead
to open the datapipelines and to load the entries into the meta data cache.
From tracing the code, it looks like the call to ReportExplorer.Execute
results in the datapipelines being opened. To delay this opening the
datasets, you could set DataPipeline.OpenDataSource to false. But then you
need to add code to open the datapipelines at some later time.
2. Prior to setting UseDataDictionary at run-time try calling
uses
daMetaDataManager;
gMetaDataManager.Clear
I think doing the above may solve your other two problems.
--
Nard Moseley
Digital Metaphors
http://www.digital-metaphors.com
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com
to force the Report Designer to display the field alias as TableName +
FieldName (in the Query Designer and Data View) without using a dictionary
at all?
Paul
In article ,
The table and field information will be loaded from the dataset to an
in-memory cache, the first time it is needed. Thereafter the cache will be
used - so it should be fast.
To modify the source, you probably want to check out ppDsgnDB.pas. The
DataDictionary.CreateFields and GetTableNames woudl be a good place to start
looking.
--
Nard Moseley
Digital Metaphors
http://www.digital-metaphors.com
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com
Check out daQueryDataView.pas. The method TdaQueryDataView.CreateField
--
Nard Moseley
Digital Metaphors
http://www.digital-metaphors.com
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com