• 検索結果がありません。

FireDAC: TFMTBCDField(2進化10進数項目)

ドキュメント内 チャレンジ!FireDAC接続! (ページ 30-39)

データマッピングルール

• データマッピングルールの設定

FireDACには、データ型のマッピング(変換)を行う仕組みが用意されている。

TFDConncectionコンポーネントのFormatOptionsプロパティにて設定可能。

→ 通常は、 [FireDAC接続エディタ]上で設定する。

設定例

形式オプション

FormatOptionsプロパティに相当

データマッピングルール

SourceDataType : 変換前のデータ型 TargetDataType : 変換後のデータ型 PrecMin : 最小桁数

PrecMax : 最大桁数

※BDEの場合、通常TSmallIntは使用されない為 (0-9)桁をdtInt32(Integer)として定義する。

【設定後に項目を作成】

• FireDACモニタ

FireDACには、FireDACとデータベースとの間で実行しているSQLコマンドや処理 件数等をロギングする仕組みが用意されている。

アプリケーションに組み込めば、障害発生時等にどのようなSQL処理が行われたかを 確認することができる。

FireDACモニタ

想定通りの結果がでない⁉

IBM i

ログファイルを見れば どんなSQLが実行されたか 確認可能!

FireDACモニタ

• TFDMoniXXClientLinkコンポーネント

FireDACのログ情報を出力するためのコンポーネント。

FDConnectionコンポーネントと同じユニットに配置。

配置したコンポーネントにあわせて、FDConnecition のMoniterByパラメータを定義。

種類 機能

TFDMoniFlatFileClientLink 指定したログファイルにFireDAC ログ情報を出力。

TFDMoniCustomClientLink イベントを使用して独自のログ出力 を実装。

TFDMoniRemoteClientLink FireDACモニターにログ情報を出力。

MonitorByパラメータ

FlatFile / Custom / Remote より 選択する。

FireDACモニタ

• TFDMoniXXClientLinkコンポーネント

ログ出力を行う場合、Tracingプロパティ=Trueを指定。

常にログ出力を行うと、大量のログファイルが生成され、

レスポンスにも影響の可能性があるため、トラブル発生時 のみモードを切り替えれば効果的。

ソースコード例

デバッグ用

アプリケーションのショートカット

実行時引数

/DEBUG オプションを付けた ショートカットを作成。

• TFDMoniFlatFlieClientLinkコンポーネント

任意のログファイルにログを出力。

FireDACモニタ

プロパティ 機能

FileName ログファイル名をフルパスで指定。

デフォルト:C:¥Users¥<LoginName>¥AppData¥Local¥Temp¥Trace1.txt

FileEncoding ログファイル出力形式。 (ecUTF8)

FileAppend ログファイルに追記するかどうか?(False:新しいファイル作成)

ShowTraces ログトレースをしている場合にメッセージを表示する。 (False)

FDQueryを実行

ログファイルが生成。

実行されたSQLが出力。

• TFDMoniRemoteClientLinkコンポーネント

FireDACモニタ(FDMonitor.exe)にログを出力。

IDEの[ツール]→[FireDACモニタ]で起動可能。

ローカルだけでなく、リモート監視もできる。

FireDACモニタ

プロパティ 機能

Host FireDACモニタの稼働端末のIPアドレスを指定。

デフォルト:127.0.0.1

FDQueryを実行

リアルタイムなログ確認が可能。

コンポーネント毎の状況も把握できる。

• データのフェッチ

データベースから値を取得して、クライアントのデータセットに保持することを フェッチという。

一般的に大量のデータをフェッチしようとすると、Openに時間がかかる。

FireDACで、1,000件のデータと、500,000件のデータの開く時間を比較。

→ 処理時間が変わらない!

データのフェッチ

IBM i

得意先マスタ (MTOKUP)

売上ファイル (FURDTP)

500,000件 1,000件

データセット

データセット FDQuery1

FDQuery2

FDQuery1を実行

FDQuery2を実行

平均Open 時間:317ms

平均Open 時間:307ms

件数にかかわらず高速にオープンできるのはなぜか?

• オンデマンドなフェッチ

FireDACでは、データセットを作成する際、一度に全レコードをフェッチするのでは なく、予め設定された件数までフェッチし、その後フェッチされたカレントレコード のカーソル位置にあわせて、必要になったときに都度、次のデータを取得する。

初期設定では、50件ずつレコードがフェッチされる。

データのフェッチ

カレントレコードが50行目。

スクロールバーが最下部に きている。

次の行へ移動

次の50件が読み込まれ、

スクロールバーが中央に移動。

• FetchOptionsプロパティ

FDConnectionのFetchOptions.RowSetSizeに全体の フェッチ件数が指定可能。

FDTable、FDQuery単位でも個別に上書き指定できる。

→ 実行するSQLやテーブルにあわせて、フェッチする件数を 調整することで、よりパフォーマンスの向上が可能。

IBM i 用のFDCO400ドライバでは、さらに一度に 読込むバッファ数を調整可能。(BEFFERCOUNT)

データのフェッチ

ODBCAdvancedパラメータに BUFFERCOUNT=[バッファ数]

の指定が可能。(20~100)

データセット

ドキュメント内 チャレンジ!FireDAC接続! (ページ 30-39)

関連したドキュメント