I've getting a strange error when trying to open a DB3 table using a TSQLTable. I'm using the demo application that ships with open-dbx (..\Source\Demos\DBMS\DBF\SQL) and I'm getting the same problem.
When I make a connection to dbase and then try to open a table with a TSQLTable I get the following error
"Schema or user name separated by a "." must be specified"
I'm doing nothing fancy with the connection, just using the dbx_dbf_connect unit from the demo to setup the connection and then assigning it to a SQLTable e.g.
Omitting the .dbf from the tablename makes no difference. I can make a TSQLQuery work fine with a "select * from Params.dbf"
but I need to be able to get this resolved as I'm using ReportBuilder for my reporting and it's raising the same error.
any ideas or suggestions? I'm guessing this is most likely a setup issue but I'm stumped
Thanks,
Chris Hedges
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
This very old mistakes in intermediate adapter "dbxadapter*.dll"
On given moment I have a no decisions of this problem. Its possible was quickly and easy solve if code "dbxadapter30.dll" was open. Or pattern of the code is given for dbx4 driver.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
In "dbxoodbc.dll" no mistakes. The Mistake inwardly "dbxadapter*.dll" which there is layer between "dbxoodbx" and dbx4. Some mistakes will in the near future are eliminated. But this - while not.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Are you making any progess with this problem? If you have anything that you would like testing regarding this issue I'd love to help out in any way I can :)
Many thanks,
Chris.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Is out new version "Version 3.100, 2008-03-24_ Beta "
In this version for Delphi 2007 Up not supported metadata reader (list tables, columns etc).
Because of it was your error : "Schema or user name separated by a "." must be specified"
Metadata suppotred only over for query ("packages\source\Dbx34DrvDbms.pas").
Support of metadata will added in following version.
Thanks for the update. I can not open dbase files via a SQLTable but only if I set GetMetadata := False;
This allows me to open the table but unfortunately ReportBuilder still generates the same error. Reportbuilder must be creating a table to allow the display of the fields within a table. and without setting the metadata property to false, it fails.
Is there any way the I can avoid this e.g all controls connected to the dbx connection will have Metadata = False?
Is it a lot of work to make Metadata be supported fully?
Thanks again,
Chris.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Qustions:
1) your delphi version ?
2) where you get error ? In IDE or in your application ?
Recommendation:
1) for delphi ide "2007 and upper" need install "packages\binary\PkgDbxXXDrv*.bpl"
2) for your application need add to project: uses …, DbxXXDrv;
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'm using D2007 and I have installed the 211 release of ODBX into the IDE and using the DbxXXDrv in my project.
To confirm, I still get the "Schema or user name separated by a "." must be specified" error if the TSQLTable.GetMetaData = True? Should that happen or must I turn it off?
If I must set TSQLTable.GetMetaData = False, then this is a problem for me still :( I am using ReportBuilder for reporting and this is displaying the error.
Is there any way of making all TSQLTable components attached to the TSQLConnection automatically set GetMetaData = False? How much work is to get DBX to support metadata correctly?
Thanks for your help :)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
+ fixed: AV when use connection option coNetPacketSize (coNetPacketSize=8192)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ fixed: "Dbx34Drv.pas" work only in static mode (replaced "GetSQLDriverODBC…" to "getSQLDriverODBC…").
+ added: "Dbx34Drv.pas" Delphi 2007: change VendorLib (it allow use direct mode odbc).
+ added: "Dbx34Drv.pas" Delphi 2007 Up: Environmet variable are processed in connection parameters LibraryName and VendorLib.
sample: VendorLib = '%windir%\system32\odbc32.dll'
+ fixed: work in IDE. added version of packages with included dbxoodbc statically (IDE not required dbxoodbc.dll).
"packages\binary\embedded\*.*"
+ updates:
"driver\binary"
dbx*connections.ini
dbx*drivers.ini
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
1) For compiling use command "build_d*.bat" or use bpl file from folder "packages\binary\"
2) In IDE it is necessary to install binary file PkgDbxXXDrv*.pbl
where:
* - your version Delphi
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I used to have a problem opening MySQL tables with TSQLTable because of the " . MySQL takes ` or nothing instead. What I did to fix this, I open the table with a TSQLQuery instead.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi All,
I've getting a strange error when trying to open a DB3 table using a TSQLTable. I'm using the demo application that ships with open-dbx (..\Source\Demos\DBMS\DBF\SQL) and I'm getting the same problem.
When I make a connection to dbase and then try to open a table with a TSQLTable I get the following error
"Schema or user name separated by a "." must be specified"
I'm doing nothing fancy with the connection, just using the dbx_dbf_connect unit from the demo to setup the connection and then assigning it to a SQLTable e.g.
MyTable.SQLConnection := MyConnection;
MyTable.Tablename := 'Params.dbf';
MyTable.Open;
Omitting the .dbf from the tablename makes no difference. I can make a TSQLQuery work fine with a "select * from Params.dbf"
but I need to be able to get this resolved as I'm using ReportBuilder for my reporting and it's raising the same error.
any ideas or suggestions? I'm guessing this is most likely a setup issue but I'm stumped
Thanks,
Chris Hedges
This very old mistakes in intermediate adapter "dbxadapter*.dll"
On given moment I have a no decisions of this problem. Its possible was quickly and easy solve if code "dbxadapter30.dll" was open. Or pattern of the code is given for dbx4 driver.
Hi Pult,
so, there is no way I can fix this? or do I need to make some changes to the open-dbx code etc?
Thanks,
Chris.
In "dbxoodbc.dll" no mistakes. The Mistake inwardly "dbxadapter*.dll" which there is layer between "dbxoodbx" and dbx4. Some mistakes will in the near future are eliminated. But this - while not.
Decision:
SQLTable1.GetMetadata := False;
In the following version problem will is solved (at nearest days).
Thanks for taking time to look into this for me. I'll be looking forward to the next version :)
Many thanks,
Chris.
Hi Pult,
Are you making any progess with this problem? If you have anything that you would like testing regarding this issue I'd love to help out in any way I can :)
Many thanks,
Chris.
Is out new version "Version 3.100, 2008-03-24_ Beta "
In this version for Delphi 2007 Up not supported metadata reader (list tables, columns etc).
Because of it was your error : "Schema or user name separated by a "." must be specified"
Metadata suppotred only over for query ("packages\source\Dbx34DrvDbms.pas").
Support of metadata will added in following version.
Changed: "demos\connections\dbx_dbf_connect.pas"
Example: "demos\dbms\dbf\sql"
:)
Version 3.210, 2010-07-27_ Beta
Hi Pult,
Thanks for the update. I can not open dbase files via a SQLTable but only if I set GetMetadata := False;
This allows me to open the table but unfortunately ReportBuilder still generates the same error. Reportbuilder must be creating a table to allow the display of the fields within a table. and without setting the metadata property to false, it fails.
Is there any way the I can avoid this e.g all controls connected to the dbx connection will have Metadata = False?
Is it a lot of work to make Metadata be supported fully?
Thanks again,
Chris.
Qustions:
1) your delphi version ?
2) where you get error ? In IDE or in your application ?
Recommendation:
1) for delphi ide "2007 and upper" need install "packages\binary\PkgDbxXXDrv*.bpl"
2) for your application need add to project: uses …, DbxXXDrv;
Latest dbx version 3.211, 2010-07-29
Version 3.211, 2010-07-31, Beta
Recommendation:
1) for ANY delphi ide : need install "packages\binary\PkgDbxXXDrv*.bpl"
2) for your application need add to project: uses …, DbxXXDrv;
what news:
+ added FechTable for D2007 up over odbc
+ DbxDBFix.pas - added support d6..d2011
- it module corrected much QC (bugs) …
Hi Pult,
Sorry for the late reply regarding this issue.
I'm using D2007 and I have installed the 211 release of ODBX into the IDE and using the DbxXXDrv in my project.
To confirm, I still get the "Schema or user name separated by a "." must be specified" error if the TSQLTable.GetMetaData = True? Should that happen or must I turn it off?
If I must set TSQLTable.GetMetaData = False, then this is a problem for me still :( I am using ReportBuilder for reporting and this is displaying the error.
Is there any way of making all TSQLTable components attached to the TSQLConnection automatically set GetMetaData = False? How much work is to get DBX to support metadata correctly?
Thanks for your help :)
2) where you get error ? In IDE or in your application ?
I have/use RBuilder.
Can give me example?
Version 3.2010.08.11
+ fixed: AV when use connection option coNetPacketSize (coNetPacketSize=8192)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ fixed: "Dbx34Drv.pas" work only in static mode (replaced "GetSQLDriverODBC…" to "getSQLDriverODBC…").
+ added: "Dbx34Drv.pas" Delphi 2007: change VendorLib (it allow use direct mode odbc).
+ added: "Dbx34Drv.pas" Delphi 2007 Up: Environmet variable are processed in connection parameters LibraryName and VendorLib.
sample: VendorLib = '%windir%\system32\odbc32.dll'
+ fixed: work in IDE. added version of packages with included dbxoodbc statically (IDE not required dbxoodbc.dll).
"packages\binary\embedded\*.*"
+ updates:
"driver\binary"
dbx*connections.ini
dbx*drivers.ini
for Delphi 2007 it is important:
DFM file:
…
object SQLConnection1: TSQLConnection
DriverName = 'DbxOpenOdbc'
LibraryName = 'dbxoodbc.dll'
Params.Strings = (
'DriverPackageLoader=TDBXDynalinkDriverLoaderOpenOdbc')
VendorLib = 'odbc32.dll'
…
end
…
see parameter "DriverPackageLoader" - it is critical for IDE
I try install package PkgDbxXXDrv2007.dpk get a error:
"Error in module : CONTAINS clause is incorrect."
IDE spoils the text of the file PkgDbxXXDrv*.dpk.
So:
1) For compiling use command "build_d*.bat" or use bpl file from folder "packages\binary\"
2) In IDE it is necessary to install binary file PkgDbxXXDrv*.pbl
where:
* - your version Delphi
>PkgDbxXXDrv*.pbl
PkgDbxXXDrv*.bpl
I used to have a problem opening MySQL tables with TSQLTable because of the " . MySQL takes ` or nothing instead. What I did to fix this, I open the table with a TSQLQuery instead.
It looks like your version of odbc draver returns incorrect Quote Char:
"DbxOpenOdbc.pas":
function TSQLConnectionOdbc.GetMetaDataOption;//(eDOption: TSQLMetaDataOption;
…
xeMetaObjectQuoteChar: // Readonly
…
OdbcRetcode := SQLGetInfoString(fhCon, SQL_IDENTIFIER_QUOTE_CHAR,
@GetInfoStringBuffer, SizeOf(GetInfoStringBuffer), iLength);
if OdbcRetcode <> OdbcApi.SQL_SUCCESS then
fOwnerDbxDriver.OdbcCheck(OdbcRetcode, 'SQLGetInfo(SQL_IDENTIFIER_QUOTE_CHAR)',
SQL_HANDLE_DBC, fhCon, nil);
if (GetInfoStringBuffer = ' ') or (GetInfoStringBuffer = cNullAnsiChar) then
begin
PAnsiChar(PropValue)^ := cNullAnsiChar;
fWantQuotedTableName := False;
iLength := 0;
end
else
begin
AnsiChar(PropValue^) := GetInfoStringBuffer;
iLength := 1;
end
More precisely one could say after seeing your connection log.