Home DADE
New Blog Posts: Merging Reports - Part 1 and Part 2

DADE for Advantage Database Server, (dictionary, ADT files)

edited October 2002 in DADE
Who can help me with a woking DADE for Advantage Database Server, dictionary
based and ADT files.

I have a DADE, which can generate tables, fields and joins at designtime.

But there are some problems. Effectively using this data is impossible.
Reports which are using this DADE give an errormessage( cannot open dataset)
at preview time.
during runtime it crashes.

Ad Franse

Comments

  • edited October 2002
    What version of ReportBuilder and Advantage are you using?

    Can you run our example Advantage end user application? It is located in
    your installation in the RBuilder\Demos\EndUserDatabases\Advantage\Native
    directory. Use the example tables that are provided in the demo directory
    for the report explorer and data dictionary tables. You can also try
    disconnecting the data dictionary to simplify the application to see if the
    data dictionary tables need to be repopulated.


    Cheers,

    Jim Bennett
    Digital Metaphors

  • edited October 2002
    Hi Jim,

    I reinstalled RB 7 enterprise on Delphi 7, I am using ADS Tdataset
    descendant for ads 6.2 (ace 6.20)

    after that I copied rbads77.* and daads.pas to c:\program
    files\borland\delphi7\rbuilder\lib
    compiled the rbads77 package

    I rebuild $(RBUILDER)\demos\4. enduser databases\advantage\1.
    native\enduser.exe

    From the IDE I double clicked the datadictionary icon, and with right-mouse
    I have choosen 'synchronize' (on the tables tab).

    No table information appeared.

    I know that this is not ok. But what's wrong in the above scenario.

    Besides that, I need to use RBuilder in ADS, where I have an ADS-dictionary.
    During IDE that worked (but with the reinstall I lost my changes......)

    Ad Franse
  • edited October 2002
    You need to click Generate, not Synchronize. Synchronize should delete any
    entries for data that do not exist in the database anymore.


    Cheers,

    Jim Bennett
    Digital Metaphors

  • edited October 2002
    Ad,

    dictionary

    I have a modified daAds file that will allow you to connect to a ADS data
    dictionary that I can send you. It works if you pass it the name of a
    dictionary connection from your application, but I have not yet had time to
    figure out why the daAds that ships with RB7 won't work pulling from an ADS
    dictionary defined in the ADS.INI.

    Let me know if you want a copy of it.


    --

    ---------------------------------------
    Terry Swiers
    Millennium Software, LLC
    http://www.1000years.com
    http://www.atrex.com

    Atrex Inventory Control/POS -
    Big business features without spending big business bucks!
    ---------------------------------------
  • edited October 2002
    The current daAds.pas plugin in RB 7 should get the Advantage data
    dictionary table names using the Ads.ini file. Place a breakpoint in
    TdaADSSession.GetTableNames to see if it isn't getting inside that code to
    get the table names from the Advantage data dictionary. Perhaps
    IsDictionaryConn is set to false on the connection object?


    Cheers,

    Jim Bennett
    Digital Metaphors

    "Terry Swiers - Millennium Software, LLC" wrote
  • edited October 2002
    I cant figure out yet what the problem is, but in the IDE, generating and
    synchronizing is NO PROBLEM.

    I already had some wonderful help from Chris Cole of tallonsoftware, That
    helped a lot, but not all.


    But once I choose for preview (so I have to really access the data), then I
    get error messages.
    It looks as the wrong path goes to the ADS-server (I have given a unc-
    connectpath, but the ADS errorlog gives an driveletter). Will investigate
    this further tomorrow.

    Ad Franse
  • edited October 2002
    Hi everyone,

    Tracing the problem with FILEMON (www.sysinternals.com) shows me that the
    full path that is used has the dictionaryname in it:


    ADS.INI
    [Databases]
    tmstestsysteem=d:\tmsdata\tmstestsysteem\TMStestsysteem.add;D


    With FILEMON I see that files
    d:\tmsdata\tmstestsysteem\TMStestsysteem.add\*.adt are accessed.
    The *.adt files are in the d:\tmsdata\tmstestsysteem\ directory.

    Where and why is is the dictionary-name appended to the real path
    specification ?
    Please remember that because one of the dictionary files is
    d:\tmsdata\tmstestsysteem\TMStestsysteem.add that name cannot be used as a
    directory name.

    Ad Franse
  • edited October 2002
    Hello Jim,

    It does not.

    I had sent twice to your support department a corrected daAds.pas file a
    while back (when Advantage first released 6.0, thus their dictionary
    support).

    The new one in version 7 still doesn't get us a table list. I had to make
    modifications to it again. It just doesn't have any support for determining
    if the database is a Dictionary or a standard table.

    And regarding the IsDictionaryConnection property, that is not something the
    developer can set. It's a read only that is set by Advantage based on the
    database the connection is opening.

    ALSO- The new version of Advantage has a new feature called Links.
    Essentially it allows one dictionary to link to other dictionaries. This
    doesn't work with RB because Advantage only allows the links to be accessed
    via TadsQuerys (no Table Support). And since RB gets field names from
    tables via (ooh now I forget where now) a non Query, this process fails. It
    is actually TdaMetaData.GetFieldsFromDataSet.

    I've spoken with Advantage regarding the problem and they are hopefully will
    be in contact with DM to discuss the problem. Links were a great addition
    to Advantage, but there are some issues now in using with with RB (which of
    course I could never ever live without).

    Chris

  • edited October 2002
    Hi Ad,


    when using ADS, the server accesses files 'locally', it don't uses the UNC path literally passed from the client. The UNC path will be translated by the server, therefore you'll never see any UNC entries in 'ads_err.dbf'.

    regards,
    Chris Ueberall;
  • edited October 2002
    Thankyou for the corrections.


    Cheers,

    Jim Bennett
    Digital Metaphors

  • edited October 2002
    Hi Chris,

    sorry that you replied on my first message of the wrong filespec. First I
    was thinking that the tables were searched on the wrong drive, in the second
    message I corrected this hypothesis. I am sure that the program searches on
    the wrong location. To be precise The actual location + the dictionary name
    appended to it and that is incorrect. I cannot decipher where to correct the
    code to correct for this situation.

    let me recapitulate:

    ADS.INI
    [Databases]
    tmstestsysteem=d:\tmsdata\tmstestsysteem\TMStestsysteem.add;D

    When I access the *.adt files from the rbuilder with daads, (I use an ADS
    dictionary, with *.adt files) the files are accessed at:

    d:\tmsdata\tmstestsysteem\TMStestsysteem.add\*.adt

    Note that the ADS-DICTIONARY-name is within the path!

    Where and why is is the dictionary-name appended to the real path
    specification ?


    Ad Franse



  • edited October 2002
    Hi Jim,

    I solved the problem temporarily. In the enduser example the database is
    called euDatabase. The advantage database that I wanted to use was
    tmstestsysteem

    ads.ini

    tmstestsysteem=\\afaws14\tmsdata\tmstestsysteem\tmstestsysteem.add;D

    When TADSconnection.aliasname = tmstestsysteem
    and TADSconnection.name = tmstestsysteem

    it works!!!!

    Note that TADSconnection.name has been changed from euDatabase into the
    aliasname.

    As far as I can go into this code, the problems have to do with :

    function TdaADSSession.IsNamedDatabase(const aDatabaseName: String;
    aDatabase: TComponent): Boolean;

    and

    class function TdaADSSession.GetDefaultADSConnection: TADSConnection;

    I hope, that someone solves this stuff. Would you please be so kind to
    include this information into the daads.pas code or in a readme file that is
    distributed with RB?

    The problem is, that during data-access the wrong directory is given for the
    database files (database-name is within the path).



    I am sure I am not the only one having this problem.


    I would like that there is a single place where all this dades are
    downloadable.
    eg


    DADE-software
    RB6
    advantage6.20
    RB7
    advantage6.11
    advantage6.20



    Ad Franse
  • edited October 2002
    Hi Ad,

    I replied to the e-mail you sent me directly with the correct file.

    I actually sent you a file that we got from someone else. I had like 5
    versions of that darn file and I sent you one we got from Terry Swiers that
    he got working. His fix was right along the same lines as what we have, but
    I remember him mentioning some limitations because he had only needed it to
    work a particular way (Terry pipe in here if I'm incorrect).

    The file I correct supports Advantage Dictionaries AND free tables and has
    the code built in it already to support the new Advantage Links function
    added in 6.2. The links function at the moment will not work until
    Advantage and RB find a way to correct an issue with getting field names
    from linked dictionaries. I'm told that the two companies are working on
    correcting it, or will be soon.

    If anyone uses Advantage and wants the fix, please e-mail me and I'll send
    it off to you. On our website we have the older fix prior to Delphi 7 / RB
    7 still up there. I haven't had time to put this one up.

    Regards,

    Chris



  • edited October 2002
    Chris,

    that
    but
    to

    Quite correct. The limitation was that it would only work if the report was
    created against an open database connection from within the application. I
    had not had the time to delve into the plugin to determine why it wouldn't
    work when attempting to report against a database alias.

    Since I didn't want the end user to be able to change the connection
    information, this was sufficient for what I needed.

    --

    ---------------------------------------
    Terry Swiers
    Millennium Software, LLC
    http://www.1000years.com
    http://www.atrex.com

    Atrex Inventory Control/POS -
    Big business features without spending big business bucks!

    Atrex Electronic Support Options:
    Atrex Knowledgebase: http://www.atrex.com/atrexkb.cfm
    Email: mailto:support@atrex.com
This discussion has been closed.