C++Builder에서 ADO 연결을 사용하여 FileMaker에 ODBC 연결

C++Builder 10.1 Berlin Professional에서는 FireDac 및 DbExpress를 통한 ODBC 연결이 불가능합니다. (불필요하게 고액의 FireDAC Client/Server Add-On Pack을 구입해야 한다.)

그래서 dbGo(ADO 접속)에 의해 ODBC 접속해 FileMaker에 연결해 보았습니다.


환경
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로서 기술」에 체크를 넣자.


3. TADOConnection을 양식 또는 데이터 모듈에 붙여넣기





붙여넣은 후 ADOConnection1을 두 번 클릭하여 데이터 링크 속성을 설정합니다.




데이터 소스 이름을 사용하려면 이전에 추가한 데이터 소스 이름을 지정합니다.





4. 코드 작성



양식 또는 데이터 모듈.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=データベースファイル名;

좋은 웹페이지 즐겨찾기