LoginSignup
1
2

More than 5 years have passed since last update.

C++BuilderでADO接続を使ってFileMakerへODBC接続

Last updated at Posted at 2017-01-19

C++Builder 10.1 Berlin ProfessionalではFireDacやDbExpressによるODBC接続が出来ません。(無駄に高額なFireDAC Client/Server Add-On Packを購入する必要がある。)
01.jpg
そこで、dbGo(ADO接続)によってODBC接続してFileMakerに繋げてみました。
スクリーンショット 2017-01-19 19.22.43.png

環境
Windows 10 pro
C++Builder 10.1 Berlin
FileMakerServer 11

1.ODBCクライアントドライバのインストール

下記URLからダウンロードしてインストール作業を行って下さい。(因みにFileMakerPro同封のドライバだと文字列をうまく処理出来ない可能性があるので、そちらは使わないでください)

FileMaker 11.3.76 xDBC クライアントドライバ
http://filemaker-jp.custhelp.com/app/answers/detail/a_id/9269/~/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2-%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%EF%BC%9Afilemaker-11.3.76-xdbc-%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90

2.DSNに追加

C:\Windows\SysWOW64\odbcad32.exe
を起動して、
ODBCデータソースアドミニストレータ(32bit)上で、「追加」をクリックし、新しく接続を構成します。この時、必ず「テキストフィールドをlong varcharとして記述」にチェックを入れましょう。
10.jpg

3.TADOConnectionをフォームかデータモジュール上に貼り付け

スクリーンショット 2017-01-19 19.43.43.png

貼り付けた後はADOConnection1をダブルクリックして、データリンクプロパティを設定していきます。
07.jpg

04.jpg

データソース名を使用するに、先程追加したデータソース名を指定します

05.jpg

06.jpg

4.コードを記述

フォームorデータモジュール.cpp
/// Connectionとデータベースを接続
    ADOConnection1->Connected = true;
/// クエリオブジェクト作成。
    TADOQuery * ADOQuery1 = new TADOQuery(this);
/// コネクションとクエリオブジェクトと関連付け
    ADOQuery1->Connection = ADOConnection1;
/// クエリを書く
    ADOQuery1->SQL->Text = L"select * from \"テーブル名\"";
/// クエリ実行(なお、値を返さないクエリの場合はExecute()を使う
    ADOQuery1->Open();
/// 最初のレコードに移動
    ADOQuery1->First();
/// 1個ずつレコードを拾う
    for (int i = 0; i < ADOQuery1->RecordCount; i++) {
/// ここでデータを取得可能
/// (CodeSite ExpressはC++Builder Delphiで使用可能なロギングシステムです。)
        CodeSite->Send(ADOQuery1->FieldByName(L"カラム名")->AsString);
/// 次のレコードに移動
        ADOQuery1->Next();
    }
/// クエリオブジェクトの接続解除
    ADOQuery1->Close();
    ADOQuery1->Active = false;
/// コネクションの接続解除
    ADOConnection1->Connected = false;
    delete ADOQuery1;

5.コンパイル

正しく動作すると、CodeSiteに取得した値が表示されます。

6.FileMakerと日本語(追記)

DSNの設定上「データベース」の名前(ファイルの名前)が日本語まじりになると「Unable to open file」で接続出来ません。
しかし、接続する方法はあります。
FileMakerへの接続は、データベース名ではなくリレーション名で指定するので、半角英数で作ったファイル内に接続したいファイルのリレーションを作成して、そこに接続するようにすれば接続出来ます。
例: 

TADQuery
ADQuery1->SQL->Text = "select * ¥"フィールド名¥" from ¥"テーブル名¥"";
ADQuery1->Open();

追記

手順3でDSNではなく接続文字列を使って接続する場合、下記の仕様で接続可能

DRIVER={FileMaker ODBC};HST=IP;PRT=2399;UID=設定したID;PWD=パスワード;SDSN=データベースファイル名;
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2