Error when opening dbase table with TSQLTable

  • Chris Hedges
    Chris Hedges

    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';

    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


    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.

  • Chris Hedges
    Chris Hedges

    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?



  • 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).

  • Chris Hedges
    Chris Hedges

    Thanks for taking time to look into this for me. I'll be looking forward to the next version :)

    Many thanks,


  • Chris Hedges
    Chris Hedges

    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,


  • 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

  • Chris Hedges
    Chris Hedges

    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,


  • Qustions:
    1) your delphi version ?
    2) where you get error ? In IDE or in your application ?

    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

    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) …

  • Chris Hedges
    Chris Hedges

    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).
    + updates:

  • for Delphi 2007 it is important:

    DFM file:

      object SQLConnection1: TSQLConnection
        DriverName = 'DbxOpenOdbc'
        LibraryName = 'dbxoodbc.dll'
        Params.Strings = (
        VendorLib = 'odbc32.dll'


    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.


    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

        * - your version Delphi

  • >PkgDbxXXDrv*.pbl

  • Leonardo Sasso
    Leonardo Sasso

    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:

    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
                      PAnsiChar(PropValue)^ := cNullAnsiChar;
                      fWantQuotedTableName := False;
                      iLength := 0;
                      AnsiChar(PropValue^) := GetInfoStringBuffer;
                      iLength := 1;

    More precisely one could say after seeing your connection log.