cancel
Showing results for 
Search instead for 
Did you mean: 

CR2011 is an 32bit app? Why it has 64bit runtime?

Former Member
0 Kudos

We are upgrading our product from 32bit to 64bit.

Once in our 32bit product, we provide an 32bit OpenAccess data source to let CR2011 to create Crystal Report by connecting to the 32bit OpenAccess data source via ODBC.

Now for our 64bit product, we provide an 64bit OpenAccess data source, now we cannot use CR2011 to connect it because the ODBC administrator 32bit will be invoked via ODBC.

So we want to search to see if there is CR2011 64bit, there is 64bit runtime installation, but there is no help for the above problem. Would you please help to give us some suggestion? Thanks a lot!

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi Don,

Thanks your clarification, it seems there is a long way for us to go.

And I have another problem for CR2011 64bit runtime, please let me know if I need open a new discussion here.

It is also the upgrade 32bit to 64bit problem: We have an c# application, it use CR runtime to get data by connecting to web service located on Tomcat Server via CR "XML and Web Service". This works in 32bit.

To upgrade to 64bit, I change the code ref to CR2011 64bit runtime, found that there are no below two refs which we used in 32bit.

CrystalDecisions.Enterprise.Framework

CrystalDecisions.Enterprise.InfoStore

Run the C# app, run below code get runtime error "Failed to load database information.error...". Would you please help to review it? Thanks a lot!

Regards,

Jie

DellSC
Active Contributor
0 Kudos

Which version of Visual Studio are you using and which version of the SDK are you referencing in the 32-bit app?  These two assemblies were available in the CR 2008 and CR XI versions of the SDK and they're still available in the BI Platform SDK (version 14.x), but they're not available in the Crystal for Visual Studio SDK (version 13.x) that you should be using.  You should also be on Visual Studio 2010 or newer.

-Dell

0 Kudos

Those 2 assemblies are for BOE Managed reports. They are not included in CR for VS.

Simply remove them from your Project and test again

Don

Former Member
0 Kudos

Hi,

Visual Studio 2013 is used to develope my c# app(platform choose "for Any CPU"), and machine installed the 64bit runtime CRforVS_redist_install_64bit_13_0_10.zip, the c# app's refs are all changed to it (two assemblies are not added in my app) .

Machine also install the CR2011 XI4.0 on another folder to test the designer.

If I download the wrong 64bit runtime?

Thanks,

Jie

Former Member
0 Kudos

Hi Don,

Those assemblies are not included in the C# project.

Test and get the same error.

I found there is CRforVS_crdbxml_13_0_10.zip,  should I install it in my machine?

Thanks,

Jie

0 Kudos

CR runtime is for the platform you want to support and not for the OS, so if you want to run your app in 32 bit mode then set your project to X86 or if for 64 bit mode then set it to x64, do not use AnyCPU, the installer will try to install for the OS and not for your application.

Then when you distribute select the 32bit MSI or 64 bit MSI, you do not need both.

Only install that CRDB_XML package if you use the native XML driver in your reports. If not then no need to install and distribute.

Include the same runtime version you installed on your DEV PC as in your distribution package, do not mix them. SO if you install SP 14 on your DEV PC than add the same SP 14 redist package.

Don

Former Member
0 Kudos

Hi,

I uninstall all 32bit/64bit msi and exe, then install below:

CRforVS_13_0_10.exe

CRforVS_crdbxml_13_0_10.zip

Now, compile and run my report which use "XML and web services" as data source successfully.

The reason should be it cannot find the "crdb_xml.dll" in my case. Thanks all!

Have a nice weekend!

Regards,

Jie

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi,

Thanks your suggestion!

I tried to provide both 32bit and 64bit version of the ODBC driver. Create a DSN using the 32bit driver and test connection success, Now the CR designer can see my DSN, but when in Database Expert, I add the DSN, get below error:

Logon failed.

Details:IM001:[Microsoft][ODBC Driver Manager] Driver does not support this function.

Is it that the OpenAccess 32bit client driver cannot connect/work with the OpenAccess 64bit Server? Our product is 64bit, so it should be the 64bit OpenAccess Server.

Please let me know if there is any misunderstanding. Thanks!

Jie

0 Kudos

Make sure the DSN is a System DSN.

Turn on ODBC tracing and see if the logs give you more info. That error is being return by ODBC due to a Function CR is trying to access.

If your 32 driver supports connecting to a 64 bit DB then CR will use it, that part is out of our control.

Don

Former Member
0 Kudos

Hi Don,

I have a question that you mentioned that "Or build in a Thunking mode into your Driver that supports both platforms." Would you please help to explain what is the thunking mode?

And how to create a 32 driver connecting to a 64bit DB? To use the thunking mode you mentioned?

And here is the error trace FYI:

crw32           a68-a70 EXIT  SQLDriverConnectW  with return code -1 (SQL_ERROR)
  HDBC                0x041EDEF0
  HWND                0x000607BE
  WCHAR *             0x70888B34 [      -3] "******\ 0"
  SWORD                       -3
  WCHAR *             0x70888B34
  SWORD                       -3
  SWORD *             0x00000000
  UWORD                        3 <SQL_DRIVER_COMPLETE_REQUIRED>

  DIAG [IM001] [Microsoft][ODBC Driver Manager] Driver does not support this function (0)

crw32           a68-a70 ENTER SQLGetDiagRecW
  SQLSMALLINT                  2 <SQL_HANDLE_DBC>
  SQLHANDLE           0x041EDEF0
  SQLSMALLINT                  1
  SQLWCHAR *          0x002FDB98
  SQLINTEGER *        0x002FE024
  SQLWCHAR *          0x002FDBA4
  SQLSMALLINT                512
  SQLSMALLINT *       0x002FDB90

crw32           a68-a70 EXIT  SQLGetDiagRecW  with return code 0 (SQL_SUCCESS)
  SQLSMALLINT                  2 <SQL_HANDLE_DBC>
  SQLHANDLE           0x041EDEF0
  SQLSMALLINT                  1
  SQLWCHAR *          0x002FDB98 [       5] "IM001"
  SQLINTEGER *        0x002FE024 (0)
  SQLWCHAR *          0x002FDBA4 [      70] "[Microsoft][ODBC Driver Manager] Driver does not support this function"
  SQLSMALLINT                512
  SQLSMALLINT *       0x002FDB90 (70)

Best regards,

Jie

0 Kudos

Hi Jie,

Thunking is basically converting 64 API's and methods/classes result sets to 32 bit mode. Typical Loss of Data warnings to go with that coding also.

Basically you need to build your ODBC driver to support both 32 and 64 bit modes. If that is not possible then write a 32 bit ODBC client that is capable of connecting to a 64 bit server.

CR Designer will use the 32 bit client for designing reports and the SDK and/or BOE Server will use the 64 bit client to connect to the DB. Or if using the CR SDK in 64 bit mode it too will use the 64 bit client.

Also of the connection requirements is outside of CR, CR assumes the client is working and configured for 32 bit applications.

ODBC trace can be a little misleading also, CR will query the DB for various API's and will return an error if the ODBC driver is not capable of doing that request. So it may simply be something we are looking for and your driver is not able to provide the info requested.

So the first error suggests your driver is not UNICODE compliant. maybe:

SQLDriverConnectW ( W is the Wide declaration for UNICODE )

...

DIAG [IM001] [Microsoft][ODBC Driver Manager] Driver does not support this function (0)

The second error indicates the following according the MSDN on that function:

SQLGetDiagRec Function

Conformance          
Version Introduced: ODBC 3.0 Standards Compliance: ISO 92
Summary          
SQLGetDiagRec returns the current values of multiple fields of a diagnostic record that contains error, warning, and status information. Unlike SQLGetDiagField, which returns one diagnostic field per call, SQLGetDiagRec returns several commonly used fields of a diagnostic record, including the SQLSTATE, the native error code, and the diagnostic message text.

MS and DataDirect both have ODBC SDK packages to download and use. Not sure where you started building your ODBC driver from but you may want to start with one of those.

Or at least add in UNICODE support if it's not already.

Also, CR is ANSII 92 Compliant so make sure you are following those ODBC Standards.

Don

0 Kudos

Hi Jiessie,

There are no plans to make a 64 bit version of CR Designer. Until 32 bit goes away and computers come in 64 and 128 bit modes 32 bit will be around for a long time.

Your only solution is to provide both 32 and 64 bit versions of you ODBC driver and they can reside on the same PC.

Or build in a Thunking mode into your Driver that supports both platforms.

Don