本記事では CData サポート担当からこんなことを聞かれたらどこを確認すべきか?という観点で、よく頂くお問合せ内容をご紹介します。
記事はこちら →CData ODBC Driver for SAP Netweaver Gateway は、ODBC 標準をサポートし、ライブSAP Netweaver Gateway データとビジュアルフォームデザイナおよびDelphi の他のラピッド開発ツールとの統合を可能にします。ODBC ドライバーは、データベース開発用のシングルAPI を提供することにより、Delphi のような単一のコードベースを共有するアプリケーションのデータアクセス戦略を簡素化します。この記事では、SAP Netweaver Gateway に接続してシンプルなVisual Component Library (VCL) アプリケーションおよびDelphi コードからデータをクエリする方法を説明します。
未指定の場合は、初めにODBC DSN (data source name) で接続プロパティを指定します。ドライバーのインストールの最後にアドミニストレーターが開きます。Microsoft ODBC Data Source Administrator を使用して、ODBC DSN を作成および構成できます。
SAP Gateway はBasic 認証とOAuth 2.0 認証の両方を許可します。Basic 認証を使用して自分のアカウントに接続するか、OAuth を使用して他のユーザーが彼らのアカウントでサービスからデータを取得できるようにすることができます。基本となる認証情報に加え、SAP Gateway テーブルへのアクセスには以下の追加プロパティが必要です。
Basic 認証では、自分のログインクレデンシャルを使用して接続します。次のプロパティを設定します。
ユーザー資格情報の接続プロパティを設定せずに接続できます。 接続すると、本製品はデフォルトブラウザでSAP Gateway OAuth エンドポイントを開きます。ログインして、本製品にアクセス許可を与えます。本製品が以下のOAuth プロセスを完了します。 他のOAuth 認証フローについては、ヘルプドキュメントの「OAuth 認証の使用」を参照してください。
以下のステップに従ってData Explorer を使用し、SAP Netweaver Gateway へのFireDAC 接続を作成できます。
以下のステップに従って、クエリの結果をグリッドに表示するシンプルなVCL アプリケーションからSAP Netweaver Gateway のクエリの実行を開始します。
TFDConnection コンポーネントフォームにドロップし、以下のプロパティを設定します。
TFDQuery コンポーネントをフォームにドロップし、以下のプロパティを設定します。
SQL:[SQL]プロパティ内のボタンをクリックし、クエリを入力します。例:
SELECT ProductID, Quantity FROM SalesOrderLineItems WHERE Quantity < 15
TDataSource コンポーネントをフォームにドロップし、以下のプロパティを設定します。
TDBGrid コントロールをフォームにドロップし、以下のプロパティを設定します。
TFDConnection およびTFQuery コンポーネントを使用してSAP Netweaver Gateway へのクエリを実行できます。このセクションでは、TFQuery コンポーネントを使用してクエリを実行するSAP Netweaver Gateway 固有の例を示します。
データソースに接続するには、TFDConnection コンポーネントの[Connected]プロパティをtrue に設定します。コードでも同じプロパティを設定できます。
FDConnection1.ConnectionDefName := 'mysapgateway';
FDConnection1.Connected := true;
パラメータ化されたリソースはパフォーマンスを向上させることができます。ステートメントの準備は、システムリソースと時間の面でコストがかかります。ステートメントの準備中、接続がアクティブで開いている必要があるためです。FireDACはデフォルトで、同じクエリが何度もリコンパイルされないようにクエリを準備します。ステートメントの準備を無効にするには、ResourceOptions.DirectExecute を[True]に設定します。クエリを一回だけ実行する必要がある場合などに設定します。
select クエリなど、結果セットを返すクエリを実行するには、Open メソッドを使用します。Open メソッドは、クエリを実行して結果セットを返し、それを開きます。クエリが結果セットを生成しない場合、Open メソッドはエラーを返します。
FDQuery1.Open('select * from SalesOrderLineItems where Quantity = :Quantity',['15']);
delete のような結果セットを返さないクエリを実行するには、ExecSQL メソッドを使用します。クエリが結果セットを返す場合、ExecSQL メソッドはエラーを返します。影響を受ける行の数を取得するには、[TFD.RowsAffected]プロパティを使用します。
FDQuery1.ExecSQL('delete from SalesOrderLineItems where Id= :myId',['x12345']);
i := FDQuery1.RowsAffected;