バッチ移動エラーの処理
メモ: ボーランド データベース エンジン(BDE)は推奨されなくなったので、今後は機能強化されません。たとえば、BDE では Unicode はサポートされません。BDE を使用して新規に開発を始めないでください。既存のデータベース アプリケーションを BDE から dbExpress に移行することを検討してください。
バッチ移動処理で発生する可能性のあるエラーには、データ型変換エラーと整合性違反の 2 種類があります。Bde.DBTables.TBatchMove には、エラー処理の報告と制御を行うためのプロパティがいくつか用意されています。
AbortOnProblem プロパティは、データ型変換エラーが発生したときに処理を中止するかどうかを指定します。AbortOnProblem が True の場合、エラーが発生するとバッチ移動処理は中止されます。False の場合は継続されます。ProblemTableName に指定したテーブルを調べると、どのレコードが問題を引き起こしたかを確認できます。
AbortOnKeyViol プロパティは、Paradox キー違反が発生したときに処理を中止するかどうかを指定します。
ProblemCount プロパティは、転送先テーブル内での処理でデータが失われたレコードの数を示します。AbortOnProblem が True の場合はエラーが発生すると処理が中止されるので、この数は 1 になります。
以下のプロパティを使用すると、バッチ移動コンポーネントはバッチ移動処理を記述した追加のテーブルを作成できます。
- ChangedTableName を指定すると、更新または削除処理の結果、転送先テーブルで変更されたすべてのレコードを収めたローカル Paradox テーブルが作成されます。
- KeyViolTableName を指定すると、Paradox テーブルの操作時にキー違反を引き起こしたソーステーブル内のすべてのレコードを収めたローカル Paradox テーブルが作成されます。AbortOnKeyViol が True の場合は最初の問題が起きたときに処理が中止されるので、このテーブルには最大でも 1 つのエントリしか保存されません。
- ProblemTableName を指定すると、データ型変換エラーが原因で転送先テーブルに登録できなかったすべてのレコードを収めたローカル Paradox テーブルが作成されます。たとえば、転送先テーブルに収まるようにソーステーブルのレコードのデータを切り詰める必要があった場合は、そのレコードがこのローカルテーブルに収められます。AbortOnProblem が True の場合は最初の問題が起きたときに処理が中止されるので、このテーブルには最大でも 1 つのエントリしか保存されません。
メモ: ProblemTableName を指定しなかった場合には、レコード内のデータは切り詰められて転送先テーブルに入れられます。