Solved

BDE Langdriver setting at runtime

Posted on 1998-11-29
3
2,408 Views
Last Modified: 2013-11-23
I have some problems with the BDE 'langdriver' parameter.

I have to use german character codes with different ODBC drivers (COBOL ISAM, ORACLE, MS_SQL,..). On some systems I get correct characters, on others I don't. I found that the problem is, that as default there is no entry in the 'lngdriver' parameter of driver in the BDE (V4.51). Once I set this to 'WEUROPE (ANSI)' via BDE-Admin everything works nicely.

My question is: How can I set the 'langdriver' parameter at runtime? I tried TDataSet.Params but this did not work.

Thank you! Roadrunner
0
Comment
Question by:Roadrunner100598
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 5

Accepted Solution

by:
ronit051397 earned 50 total points
ID: 1348555
To change the LANGDRIVER to WEUROPE (ANSI) in a Paradox Table, write:

 SetConfigParameter('\DRIVERS\PARADOX\INIT\;LANGDRIVER','WEUROPE (ANSI)');

uses BDE, DBTables, DB;

    procedure SetConfigParameter(Param: string; Value: string);
    var
      hCur: hDBICur;
      rslt: DBIResult;
      Config: CFGDesc;
      Path, Option: string;
      Found: boolean;
      Temp: array[0..255] of char;
    begin
      hCur := nil;
      Found := False;
      try
      Check(dbiInit(Nil));
        if Pos(';', Param) = 0 then
          raise EDatabaseError.Create('Invalid parameter passed to function.  There must ' +
            'be a semi-colon delimited sting passed');
        Path := Copy(Param, 0, Pos(';', Param) - 1);
        Option := Copy(Param, Pos(';', Param) + 1, Length(Param) - Pos(';', Param));
        Check(DbiOpenCfgInfoList(nil, dbiREADWRITE, cfgPERSISTENT, StrPCopy(Temp, Path), hCur));
        repeat
          rslt := DbiGetNextRecord(hCur, dbiNOLOCK, @Config, nil);
          if rslt = DBIERR_NONE then
          begin
            if StrPas(Config.szNodeName) = Option then
            begin
              StrPCopy(Config.szValue, Value);
              Check(DbiModifyRecord(hCur, @Config, FALSE));
              Found := True;
              break;
            end;
          end
          else
          if rslt <> DBIERR_EOF then Check(rslt);
        until rslt <> DBIERR_NONE;
        if Found = False then
          raise EDatabaseError.Create(Param + ' entry was not found in configuration file');
      finally
        if hCur <> nil then Check(DbiCloseCursor(hCur));
        DbiExit;
      end;
    end;
0
 
LVL 1

Author Comment

by:Roadrunner100598
ID: 1348556
Thank you Ronit for the excellent answere!

I had to work out two minor problems myself - so just for the record:

For ODBC drivers the LangDriver Parameter is in the path
\DRIVERS\Name of ODBC Driver\DB OPEN\

If the ODBC driver name contains spaces, a backslash has to end the path - otherwise the last backslash is added automatically.
0
 
LVL 5

Expert Comment

by:ronit051397
ID: 1348557
Thanks for the info.
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
Come and listen to Percona CEO Peter Zaitsev discuss what’s new in Percona open source software, including Percona Server for MySQL (https://www.percona.com/software/mysql-database/percona-server) and MongoDB (https://www.percona.com/software/mongo-…
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …

688 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question