DbxSda compatiblity issue with dbx4.0?

Discussion of open issues, suggestions and bugs regarding usage of dbExpress drivers for SQL Server in Delphi and C++Builder
Post Reply
rwerning
Posts: 17
Joined: Wed 20 Feb 2008 21:09

DbxSda compatiblity issue with dbx4.0?

Post by rwerning » Wed 20 Feb 2008 21:23

When stepping through the vcl code, I noticed that DbxSda is showing up as a dbx 3.0 driver, not a 4.0 one. Is DbxSda fully compatible with Dbx4.0, or does it just use the dbx adapter?

We're retrieving MetaData via TCustomSQLDataSet, and Dbx 4.0 formats table and field names differently (no underscore in dbx4 for one). This is an issue for us and need to change our utility around if it won't support dbx 4.

DBXCommon.TDBXDatabaseMetaData.Init sets the MetaDataVersion to 4 if the Reader.ColumnCount >=10, the reader for DbxSda only has 6 columns.

Any help or suggestion would be greatly appreciated.

Thank you,
Rich Werning

rwerning
Posts: 17
Joined: Wed 20 Feb 2008 21:09

Post by rwerning » Wed 20 Feb 2008 22:30

Think I've answered my own question, reviewing the dbexp source, the function TCRSQLMetaData.getDatabase only creates the 6 fields. The CodeGear unit DBXCommon procedure TDBXConnection.GetCommands implements extended commands if the command type is TDBXConectionEx, and most of those commands aren't implemented in dbexp. Specifically I need the getViews and getIndexColumns.

I'm caught in a catch 22 here. The CodeGear drivers are unstable, we had too many issues with them and decided to go back to the CoreLab drivers we used without issue for years. But now I don't have access to all of the MetaData that I need.

Are you planning on fully implementing the dbx4 functionality? If so, do you have any idea of a time frame (next release, this year, never?). Also, have you implemented those extended features in the Oracle driver? We're currently trying to get licenses - sales hasn't reponded to our email.. :( - and need to know if I'm going to run into the same problem with Oracle.

Thank you,
Rich Werning

Plash
Devart Team
Posts: 2844
Joined: Wed 10 May 2006 07:09

Post by Plash » Fri 22 Feb 2008 14:58

All Core Lab drivers do not support extended metadata, and currently we have no plans to support them.

You can get a list of views using 'GetTables % View' command. You can also get the metadata for index columns using 'GetIndexes' command.

Please forward your e-mail to our sales again, and provide an alternative e-mail address that we can use to reply you.

rwerning
Posts: 17
Joined: Wed 20 Feb 2008 21:09

Post by rwerning » Fri 22 Feb 2008 18:54

Thank you for responding, I've followed up with the sales team.

I'm not sure what you mean for using the 'GetIndexes' command. I've tried working with the commandtext and using the options from GetCommandTypes (SQLConnection1.DBXConnection.GetCommandTypes), but haven't had any success using them. Unfortunately there is little info to be found in blogs, forums or help files regarding using metadata.

If you could provide an example I'd greatly appreciate it.

Thanks
Rich

rwerning
Posts: 17
Joined: Wed 20 Feb 2008 21:09

Post by rwerning » Fri 22 Feb 2008 20:05

I found it, the problem was mine on the way I was using it. This is whats working for me now.

function GetTableIndexColumns30(aConnection: TSQLConnection; value: string) : OleVariant;
begin
[...]
AIndexDataSet := TSQLDataSet.create(nil);
AIndexDataSet.SqlConnection := aConnection;
AIndexDataSet.DbxCommandType := TDBXCommandTypes.DbxMetaData;
AIndexDataSet.CommandText := 'GetIndexes ' + Value;
AIndexDataSet.Open;
[...]
end;

Thanks for the help, at least I have it working now. I am curious as to why you're not going to support the extended metadata though.

- Rich Werning

Plash
Devart Team
Posts: 2844
Joined: Wed 10 May 2006 07:09

Post by Plash » Thu 28 Feb 2008 11:59

We are not going to support extended metadata because currently we have some more priority tasks.

Post Reply