C++Builder でSAP Business One のデータにデータバインドするコントロールを作成

Dibyendu Datta
Dibyendu Datta
Lead Technology Evangelist
C++Builder で標準コンポーネントとコントロールを使ってSAP Business One のデータ にデータバインド。

CData ODBC ドライバー for SAP Business One を使用すると、C++Builder の標準データアクセスコンポーネントを使ってライブのSAP Business One のデータ への接続を簡単に統合できます。この記事では、C++Builder でシンプルな VCL(Visual Component Library)アプリケーションを作成し、SAP Business One のデータ に接続してクエリを実行し、グリッドに結果を表示する方法を説明します。さらに、FireDAC コンポーネントを使ってコードからコマンドを実行する方法も紹介します。

SAP Business One のデータへの接続を作成

まだ設定していない場合は、ODBC DSN(データソース名)で接続プロパティを指定します。これはドライバーインストールの最終ステップです。Microsoft ODBC データソースアドミニストレーターを使って ODBC DSN を作成・設定できます。

SAP Business One に認証するには、User およびPassword プロパティを指定する必要があります。
データに接続するには、Url を指定します。これは、SAP Business One Service Layer のルートURL です。

次に、以下の手順に従って Data Explorer を使用し、SAP Business One への FireDAC 接続を作成します。

  1. 新しい VCL Forms アプリケーションで、Data Explorer の FireDAC ノードを展開します。
  2. Data Explorer の ODBC Data Source ノードを右クリックします。
  3. Add New Connection をクリックします。
  4. 接続の名前を入力します。
  5. 表示される FireDAC Connection Editor で、DataSource プロパティをSAP Business One の ODBC DSN の名前に設定します。

SAP Business One のデータに接続する VCL アプリケーションを作成

以下の手順に従って、クエリの結果をグリッドに表示するシンプルな VCL アプリケーションからSAP Business One のデータ のクエリを開始します。

  1. TFDConnection コンポーネントをフォームにドロップし、以下のプロパティを設定します:

    • ConnectionDefName:SAP Business One への FireDAC 接続を選択します。
    • Connected:メニューから True を選択し、表示されるダイアログで資格情報を入力します。
  2. TFDQuery コンポーネントをフォームにドロップし、以下のプロパティを設定します:

    • Connection:TFDConnection コンポーネントに設定します(まだ指定されていない場合)。
    • SQL:SQL プロパティのボタンをクリックし、クエリを入力します。例:

      SELECT DocEntry, DocType FROM Orders
      
    • Active:このプロパティを true に設定します。
  3. TDataSource コンポーネントをフォームにドロップし、以下のプロパティを設定します:

    • DataSet:このプロパティのメニューで、TFDQuery コンポーネントの名前を選択します。
  4. TDBGrid コントロールをフォームにドロップし、以下のプロパティを設定します:

    • DataSource:TDataSource の名前を選択します。
  5. TFDGUIxWaitCursor をフォームにドロップします — これは実行時エラーを回避するために必要です。

FireDAC コンポーネントを使ってSAP Business One にコマンドを実行

TFDConnection および TFQuery コンポーネントを使用して、SAP Business One のデータ にクエリを実行できます。このセクションでは、TFQuery コンポーネントを使ったクエリ実行のSAP Business One 固有の例を紹介します。

SAP Business One のデータに接続

データソースに接続するには、TFDConnection コンポーネントの Connected プロパティを true に設定します。コードから同じプロパティを設定することもできます:

FDConnection1->ConnectionDefName = "CData SAP Business One ODBC Source";
FDConnection1->Connected = true;

TFDQuery コンポーネントをSAP Business One のデータ に接続するには、コンポーネントの Connection プロパティを設定します。設計時に TFDQuery コンポーネントを追加すると、上記のアプリケーションのように、その Connection プロパティはフォーム上の TFDConnection を指すように自動的に設定されます。

パラメータ化クエリの作成

パラメータ化クエリを作成するには、以下の構文を使用します:

FDQuery1->SQL->Text = "select * from Orders where doctype = :DocType";
FDQuery1->ParamByName("doctype")->AsString = "dDocument_Items";
FDQuery1->Open();

上記の例では、文字列型の入力パラメータを名前でバインドし、結果のデータセットを開いています。

ステートメントの準備

ステートメントの準備は、システムリソースと時間の両方でコストがかかります。ステートメントの準備中は、接続がアクティブで開いている必要があります。デフォルトでは、FireDAC は同じクエリを何度もコンパイルすることを避けるためにクエリを準備します。ステートメントの準備を無効にするには、ResourceOptions.DirectExecute を True に設定します。例えば、クエリを一度だけ実行する必要がある場合などです。

クエリの実行

SELECT クエリなど、結果セットを返すクエリを実行するには、Open メソッドを使用します。Open メソッドはクエリを実行し、結果セットを返して開きます。クエリが結果セットを生成しない場合、Open メソッドはエラーを返します。

FDQuery1->SQL->Text = "select * from Orders where doctype = :DocType";
FDQuery1->ParamByName("doctype")->AsString = "dDocument_Items";
FDQuery1->Open();

結果セットを返さないクエリを実行するには、ExecSQL メソッドを使用します。クエリが結果セットを返す場合、ExecSQL メソッドはエラーを返します。影響を受けた行数を取得するには、TFD.RowsAffected プロパティを使用します。

FDQuery1->SQL->Text = "delete from Orders where Id = :Id";
FDQuery1->Params->Items[0]->AsString = "x12345";
FDQuery1->ExecSQL();
AnsiString i = FDQuery1->RowsAffected;
ShowMessage("Rows affected: " + i);

関連記事

以下に、RAD Studio、Delphi、C++ Builder で CData ODBC ドライバーを使用するための他の記事を紹介します。

はじめる準備はできましたか?

SAP Business One ODBC Driver の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

SAP Business One Icon SAP Business One ODBC Driver お問い合わせ

SAP ODBC Driver でSAP Business OneデータにODBC 接続をサポートするあらゆるツールから連携を実現します。

With SAP ODBC Business One Driver、accessing Accounts、Activities、Orders、Customers などのデータにODBC インターフェースでアクセスできます。