on 11-19-2010 1:37 PM
In our testing here, it looks like Crystal Reports for .NET Framework 4.0 does not support Field Definition Files anymore? Is this true?
It seems on the machines that only have the CRVS2010 Runtime installed we consistently get the error:
Failed to load database information.
Error in file ...rpt
Failed to load database information.
On machines where Crystal Reports 2008 runtime was installed in the past, these files would work. They also work on machines where CRVS2010 runtime is installed along with the the Crystal Reports 2008 runtime OR Crystal Reports 2008 full version.
What's the story? Thanks.
Kyle
We have exactly the same problem, everything is working just fine on the developer computers with CRforVS_13 installed but not on the user machines on witch we installed "CR for .net4" i believe (32bit), same database information error as Kyle got.
If we remove the ttx we get no error.
A solution to our problem would be very appreciated.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
With all the understanding in the world and respect and all that, the 1st thing I'd say is; guys, it's time to move off of TTX files. As far as I'm concerned these were a great idea in version 6 of CR when they 1st came out, but at this time -7 versions later, it really is time to move on.
Ok. Now that I'm done with my little rant (apologies). Inspecting the msm in Orca it looks like the TTX driver is missing; crdb_cdo.dll. Please check if you see it in the following folder;
C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86
If not, for now, you'll have to copy the dll there from your development box. I'll do a bit more investigating and if my initial finding is confirmed, I'll do a fix request.
Oh. BTW.; CRVS2010 is the last version of CR to ship the crdb_cdo.dll...
Ludek
Follow us on Twitter http://twitter.com/SAPCRNetSup
Got Enhancement ideas? Try the [SAP Idea Place|https://ideas.sap.com/community/products_and_solutions/crystalreports]
Ludek,
Thank you for the advice that after CR2010 the TTX reports will not be supported anymore. We have discussed removing them numerous times, but it is not a small change since it is 90 reports with specific code that generates each one. I agree that we will need to deal with the pain in this version at some point, but for a release a week away we cannot do that. I will put the file in place and test the results.
Will there be a runtime released with the missing crdb_cdo.dll, and when could we expect it? Our customers rely on the installs, and adding an additional dll is not ideal.
Secondary question: If I build our report manager as "Any CPU" and CRVS2010 references, it only works with the x86 version of the runtime, not the x64 version. How can I modify our report manager to work with both versions depending on where it is installed without having to split our assembly into two versions?
Thanks again for the assistance.
Kyle
I have tested the copying the crdb_cdo.dll, and it was not successful. But, comparing the two folders I have found the differences between the runtime install and the VS2010 install. These are not all the missing files, but these are the files that specifically work for Field Definition Files (TTX):
crdb_cdo.dll
crdb_cdo_res_cs.dll
crdb_cdo_res_da.dll
crdb_cdo_res_de.dll
crdb_cdo_res_en.dll
crdb_cdo_res_es.dll
crdb_cdo_res_fi.dll
crdb_cdo_res_fr.dll
crdb_cdo_res_hu.dll
crdb_cdo_res_it.dll
crdb_cdo_res_ja.dll
crdb_cdo_res_ko.dll
crdb_cdo_res_nb.dll
crdb_cdo_res_nl.dll
crdb_cdo_res_pl.dll
crdb_cdo_res_pt.dll
crdb_cdo_res_ru.dll
crdb_cdo_res_sk.dll
crdb_cdo_res_sv.dll
crdb_cdo_res_th.dll
crdb_cdo_res_tr.dll
crdb_cdo_res_zh_CN.dll
crdb_cdo_res_zh_TW.dll
crdb_fielddef.dll
crdb_fielddef_res_cs.dll
crdb_fielddef_res_da.dll
crdb_fielddef_res_de.dll
crdb_fielddef_res_en.dll
crdb_fielddef_res_es.dll
crdb_fielddef_res_fi.dll
crdb_fielddef_res_fr.dll
crdb_fielddef_res_hu.dll
crdb_fielddef_res_it.dll
crdb_fielddef_res_ja.dll
crdb_fielddef_res_ko.dll
crdb_fielddef_res_nb.dll
crdb_fielddef_res_nl.dll
crdb_fielddef_res_pl.dll
crdb_fielddef_res_pt.dll
crdb_fielddef_res_ru.dll
crdb_fielddef_res_sk.dll
crdb_fielddef_res_sv.dll
crdb_fielddef_res_th.dll
crdb_fielddef_res_tr.dll
crdb_fielddef_res_zh_CN.dll
crdb_fielddef_res_zh_TW.dll
Copying all these files in place will allow TTX reports to run properly.
Big question for CR Developers:
1. Is it possible to quickly get a new runtime installer created with these missing files and any other missing files? We are deploying a new version of our software on 11/30 at a large customer and they will not want us to copy the files in place. If we cannot, we may have to revert back to CR2008 and we will then be stuck on CR2008 for three or four years.
Thanks for the help.
Kyle
Hello Kyle.
I really, really appreciate you doing all this work. It helps a lot. I actually created a deployment project here to, but have not had the time to try the deployment yet.
But through your efforts we have the answers I was going to go after with me deployment. E.g.; crdb_cdo.dll and crdb_fielddef.dll (I should have checked on this dll too) are missing. the other files are just language resource files and I am quite sure we do not need those.
So an initial work-around is to copy those files into the C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86 folder.
As to a fix. SP 1 is planned for about 3 moths from now, so that is when a new msm file would be released also.
Once I have an escalation number from QA re the missing dlls, I'll update this thread.
Re. compiling to Any CPU.
This should work. Again, not something I tried yet. However there are a couple of things to be aware of of:
1) correct runtime must be deployed (32 / 64 bit)
2) if you want the app to run 64 bit, you need to ensure that the database client is also 64 bit.
3) If you create an app in VS, it is a 32 bit app. A report connecting to say ODBC will use a 32 bit ODBC. Deploying this app when compiled to Any CPU to a 64 bit OS, you need to ensure the ODBC datasource is 64 bit.
and so on.
If you have more details on the ANYCPU issue, let's create a new thread and discuss it there.
Ludek
Would the deployment you have created be available as an installer before the SP1 release? Perhaps as a Fix Pack, or simply a replacement for the current runtime installer? It looked like there were a number of missing assemblies from the runtime installer that are included in the VS2010 installer. Some were VS2010 specific, but a number were not. Thanks again for the help.
Kyle
Hi Kyle,
There will not be any fix packs for this product. They will be full versions only and we are doing all we can to allow users to apply the patches over top of the existing installs so you don't have to manually uninstall first.
We are doing complete testing and will fix any issues that arise.
I believe those missing assemblies are only in our folder, they are all GAC'd in the \windows\assembly folder.
Can you add those missing database dll's to your project manually? They don't need to be registered just copied into the folder. Or create a simple MSI for them only and distribute with your installer?
Thank you
Don
Hi Kyle ,
I can see the following files under C:\Program Files (x86)\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86
rdb_cdo.dll
crdb_cdo_res_cs.dll
crdb_cdo_res_da.dll
crdb_cdo_res_de.dll
crdb_cdo_res_en.dll
crdb_cdo_res_es.dll
crdb_cdo_res_fi.dll
crdb_cdo_res_fr.dll
crdb_cdo_res_hu.dll
crdb_cdo_res_it.dll
crdb_cdo_res_ja.dll
crdb_cdo_res_ko.dll
crdb_cdo_res_nb.dll
crdb_cdo_res_nl.dll
crdb_cdo_res_pl.dll
crdb_cdo_res_pt.dll
crdb_cdo_res_ru.dll
crdb_cdo_res_sk.dll
crdb_cdo_res_sv.dll
crdb_cdo_res_th.dll
crdb_cdo_res_tr.dll
crdb_cdo_res_zh_CN.dll
crdb_cdo_res_zh_TW.dll
crdb_fielddef.dll
crdb_fielddef_res_cs.dll
crdb_fielddef_res_da.dll
crdb_fielddef_res_de.dll
crdb_fielddef_res_en.dll
crdb_fielddef_res_es.dll
crdb_fielddef_res_fi.dll
crdb_fielddef_res_fr.dll
crdb_fielddef_res_hu.dll
crdb_fielddef_res_it.dll
crdb_fielddef_res_ja.dll
crdb_fielddef_res_ko.dll
crdb_fielddef_res_nb.dll
crdb_fielddef_res_nl.dll
crdb_fielddef_res_pl.dll
crdb_fielddef_res_pt.dll
crdb_fielddef_res_ru.dll
crdb_fielddef_res_sk.dll
crdb_fielddef_res_sv.dll
crdb_fielddef_res_th.dll
crdb_fielddef_res_tr.dll
crdb_fielddef_res_zh_CN.dll
crdb_fielddef_res_zh_TW.dll
For export TTX file I used the following code in Vb2010
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.EditableRTF
.DestinationOptions = crDiskFileDestinationOptions
.FormatOptions = CrFormatTypeOptions
Please help me.
The problem is resolved .
I changed the code :
Dim CrFormatTypeOptions As New TabAlignment
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.TabSeperatedText
.DestinationOptions = crDiskFileDestinationOptions
.FormatOptions = CrFormatTypeOptions
Thanks.
YB
We are currently working on researching / developing the consumption of data via the Odata protocol (which utilizes AtomPub). If you are not familiar with the technologies around this protocol, [you canfind out more here|http://www.odata.org/].
This would serve a similar model to TTX as you would develop your report as a "template" with place holder fields. You can then push data into that report via the Odata protocol. If you are building web connected applications, then this model would work well. If you are building 2-tier client server applications, then it doesn't help.
I'm curious to understand whether this type of model would help for the next release of your applications. What does everyone on this thread think?
Coy
Area Product Owner for Crystal Reports
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
The fix is working just fine for us, thanks Ludek!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
thx for the info, it really helps me alot..because i've been searching for the pass 2 days
regarding TTX as "old" tech, what will be the new tech to replace it?
because i'm using TTX all this time, i like the idea that it doens't connect to DB..we just need to pass the "data" to it..
thx for any insight
Edited by: erickwidya on Jan 20, 2011 5:46 AM
Its the same to me.
We have al lot of reports which are developed using ttx-files. Its an easy way to create database independent reports.
We only pass the results of our database query or data generation to the reports.
It's the easiest way for us to do this.
So why is this marked as "old"?
What is an database independent replacement of this?
thanks
Jürgen
ADO .NET Datasets.
For more info see teh KBase [1511438 - How to use datasets to pass data to Crystal Reports|http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/oss_notes_boj/sdn_oss_boj_bi/sap(bD1lbiZjPTAwMQ==)/bc/bsp/spn/scn_bosap/notes%7B6163636573733d36393736354636443646363436353344333933393338323636393736354637333631373036453646373436353733354636453735364436323635373233443330333033303331333533313331333433333338%7D.do]
Ludek
Follow us on Twitter http://twitter.com/SAPCRNetSup
Got Enhancement ideas? Try the [SAP Idea Place|https://ideas.sap.com/community/products_and_solutions/crystalreports]
Hi Ludek
thanks for your reply. But this wont help me. This method means that i have to create corresponding objects for each Report using Visual Studio. We create our Reports using Crystal Reports programm not the Designer which is include in Visual Studio.
I think I will first tell you how we work now:
We have an application called Reporting which connects to different databases and has different Customizing tables in each databases.
In these table you can find the stored procedures for the data and the path to the reports.
The User selects a Report and the application opens the source code of stored procedure, interprets it and generates an individual query dialog for the parameters. Thes parameters can even stored in the database as variants which can later get loaded again.
Each Parameter can have an dynamical default value or you can select a value from an specific stored procedure.
Later the stored procedure is executed with the paramater values and the Resultset ist passed to an datatable.
This datatable will now passed to then datasource of the report.
This works if the report was created with and Stored procedure or with an ttx-file.
The easiest way for us is the ttx-file.
Stored procedure ist also OK but I detected in an earlier Version problems if the Server could not get connected. This meant delays while loading the report up to 5 secods. So we switched to ttx files and didn't have any problems up to now.
Jürgen
Hi Jürgen,
Convert your reports to use XML files which is still a file based system and should not cause delays. You can do this using RAS to change your report data source, save the reports so you don't have to convert each time to save on performance.
You can also read/write to the report Summary Info, which is saved in the RPT file on the hard drive. Set one of the vlaues and then test if the report has been converted already, if not then call the routine below and write the update to the summary field. Next time the user opens the report your app won't have to convert to xml.
You can ignore the data source below or use it to convert your ttx output to xml output. Important part is to get your data into an XML format source:
private void SetToXML_Click(object sender, EventArgs e)
{
CrystalDecisions.CrystalReports.Engine.ReportDocument rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
ISCDReportClientDocument rcd;
rcd = rptClientDoc;
//string connString = "Provider=SQLOLEDB;Data Source=vancsdb02.crystald.net;Database=Northwind;User ID=devtech;Password=devtech";
string connString = "Provider=SQLOLEDB;Data Source=dwcb12003;Database=xtreme;User ID=sb;Password=pw";
string sqlString = "Select * From Orders";
OleDbConnection oleConn = new OleDbConnection(connString);
OleDbDataAdapter oleAdapter = new OleDbDataAdapter(sqlString, oleConn);
DataTable dt1 = new DataTable("Orders");
oleAdapter.Fill(dt1);
System.Data.DataSet ds = new System.Data.DataSet();
ds.Tables.Add(dt1);
ds.WriteXml("c:\sc.xml", XmlWriteMode.WriteSchema);
//Create a new Database Table to replace the reports current table.
CrystalDecisions.ReportAppServer.DataDefModel.Table boTable = new CrystalDecisions.ReportAppServer.DataDefModel.Table();
//boMainPropertyBag: These hold the attributes of the tables ConnectionInfo object
PropertyBag boMainPropertyBag = new PropertyBag();
//boInnerPropertyBag: These hold the attributes for the QE_LogonProperties
//In the main property bag (boMainPropertyBag)
PropertyBag boInnerPropertyBag = new PropertyBag();
//Set the attributes for the boInnerPropertyBag
boInnerPropertyBag.Add("File Path ", @"C:sc.xml");
boInnerPropertyBag.Add("Internal Connection ID", "{680eee31-a16e-4f48-8efa-8765193dccdd}");
//Set the attributes for the boMainPropertyBag
boMainPropertyBag.Add("Database DLL", "crdb_adoplus.dll");
boMainPropertyBag.Add("QE_DatabaseName", "");
boMainPropertyBag.Add("QE_DatabaseType", "");
//Add the QE_LogonProperties we set in the boInnerPropertyBag Object
boMainPropertyBag.Add("QE_LogonProperties", boInnerPropertyBag);
boMainPropertyBag.Add("QE_ServerDescription", "NewDataSet");
boMainPropertyBag.Add("QE_SQLDB", "False");
boMainPropertyBag.Add("SSO Enabled", "False");
//Create a new ConnectionInfo object
CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo boConnectionInfo =
new CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo();
//Pass the database properties to a connection info object
boConnectionInfo.Attributes = boMainPropertyBag;
//Set the connection kind
boConnectionInfo.Kind = CrConnectionInfoKindEnum.crConnectionInfoKindCRQE;
//**EDIT** Set the User Name and Password if required.
boConnectionInfo.UserName = "";
boConnectionInfo.Password = "";
//Pass the connection information to the table
boTable.ConnectionInfo = boConnectionInfo;
//Get the Database Tables Collection for your report
CrystalDecisions.ReportAppServer.DataDefModel.Tables boTables;
boTables = rptClientDoc.DatabaseController.Database.Tables;
//For each table in the report:
// - Set the Table Name properties.
// - Set the table location in the report to use the new modified table
boTable.Name = "Orders";
boTable.QualifiedName = "Orders";
boTable.Alias = "Orders";
rptClientDoc.DatabaseController.SetTableLocation(boTables[0], boTable);
//Verify the database after adding substituting the new table.
//To ensure that the table updates properly when adding Command tables or Stored Procedures.
rptClientDoc.VerifyDatabase();
MessageBox.Show("Data Source Set", "RAS", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Thank you
Don
Hello Ju00FCrgen
I am not sure why in your scenario ADO .NET Datasets will not work. See the sample app csharp_win_adodotnet.zip, or vbnet_win_adodotnet.zip. I believe these app essentially do the same thing your app does; take a table / stored proc / view / what ever from a database, create an ADO .NET Dataset out of that:
''Create and open a connection using the connection string
adoOleDbConnection = New OleDbConnection(connectionString)
''Build a SQL statement to query the datasource
Dim sqlString As String = ""
sqlString = "Select * From authors"
''Retrieve the data using the SQL statement and existing connection
adoOleDbDataAdapter = New OleDbDataAdapter(sqlString, adoOleDbConnection)
''Create a instance of a Dataset
dataSet = New DataSet()
and pass the dataset to the report, explicitly or implicitly:
explicitly
crReportDocument.Database.Tables(0).SetDataSource(dataSet.Tables("NAME_OF_TABLE"))
implicitly
crReportDocument.SetDataSource(dataSet)
or
crReportDocument.SetDataSource(dataSet.Tables(0))
As long as the Dataset format matches the format expected by the report, this will work. If the format does not match, you can write out the Dataset to an XML:
myDataset.WriteXml(xmlPath, XmlWriteMode.WriteSchema)
Open the report in the CR designer, point the report at the XML and map the fields and fix up the report. See the blog [Troubleshooting Issues with VS .NET Datasets and Crystal Reports|https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/13270] [original link is broken] [original link is broken] [original link is broken]; for more details.
- Ludek
Hi Don
Thanks for your Coding. After translating to VB.net (my preferred language) I was able to write a programm which first opens an Crystalreport, creates an Dataset for each table, saves the xml schema to the filesystem and then changes the datasource.
So I can now easily convert all my Reports.
Jürgen
thx for the info Ludek,
it's the same method that i used to pass the "data" to my current report, just different in designing the report..
i'll try using ADO.NET Dataset nex time
@Coy: hm..new protocol means need to explore more in depth :(..but is used widely so it looks promising (i can see FB, MOSS, LinQPAD)
and the most important thing it can be used in .NET :D..
i'll explore when i get more free time..thx for the info too
User | Count |
---|---|
81 | |
9 | |
9 | |
7 | |
7 | |
7 | |
6 | |
5 | |
5 | |
5 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.