 |
Btrieve API Guide (v11) |
 |
|
Get Previous Extended(37)
Get Previous Extended オペレーション(B_GET_PREV_EXTENDED)では、指定されたキーに基づき、論理位置の直前からファイルの先頭へ向かって 1 つまたは複数のレコードを検索します。検索したレコードがフィルター条件を満たしているかどうかをチェックした上で、条件を満たすレコードだけを取得します。フィルター条件は論理式の形を取り、キー フィールドのみに制限されません。
Get Previous Extended オペレーションでは、レコードから指定した部分だけを抽出し、その部分だけをアプリケーションに返すこともできます。
パラメーター
|
オペレーション コード
|
ポジション ブロック
|
データ バッファー
|
データ バッファー長
|
キー バッファー
|
キー番号
|
送り値
|
|
|
|
|
|
|
戻り値
|
|
|
|
|
|
|
前提条件
- 対象となるファイルが開いていることが必要です。
- ファイルがデータオンリー ファイルであってはいけません。
- 指定したキーに基づく前の論理位置を確立しておくことが必要です。
手順
- オペレーション コードに 37 を設定します。オプションで、ロック バイアスも指定できます。
- +100 - 単一レコード ウェイト ロック
- +200 - 単一レコード ノーウェイト ロック
- +300 - 複数レコード ウェイト ロック
- +400 - 複数レコード ノーウェイト ロック
- ロックの詳細については、『Pervasive PSQL Programmer's Guide』を参照してください。
- ファイルのポジション ブロックを渡します。
- 入力データ バッファーと戻りデータ バッファーのどちらか大きい方を格納できるように、十分な長さのデータ バッファーを指定します。表 21 に示す構造体に従って、データ バッファーを初期化します。
- データ バッファー長に、入力構造体(表 21)と戻り構造体(表 22)のどちらか大きい方の長さを指定します。
- トランザクショナル インターフェイスではバッファーを用意して、Extended オペレーションのワークスペースとして使用できるようにします。このバッファーのサイズは、[拡張オペレーション バッファー サイズ]オプションを使って構成します。データ バッファー構造体、取得される最長のレコード、およびリクエスターのオーバーヘッドの 355 バイト、これらの合計が設定したバッファー サイズを超えることはできません。(リクエスターのオーバーヘッドは、DOS ワークステーションのエンジンには適用できません。)
- キー バッファーに前のオペレーションで取得したキー値を指定します。キー バッファーには、前の呼び出しでトランザクショナル インターフェイスから返されたキー値とまったく同じものを渡します。トランザクショナル インターフェイスでは、ファイル内の現在の位置を決定するために、直前にキー バッファーに格納された情報が必要となるからです。
- キー番号パラメーターに、前の呼び出しで使用したキー パスを設定します。Get Previous Extended オペレーションを使ってキー パスを変更することはできません。
詳細
このオペレーションでは、Get Next Extended オペレーションの場合と同じ入力データ バッファーおよび戻りデータ バッファーを使用します。詳しくは詳細をご覧ください。
結果
このオペレーションでは、Get Next Extended オペレーションと同様の結果が返されます。詳しくは結果をご覧ください。
ポジショニング
Get Previous Extended オペレーションを実行すると、完全な論理カレンシーおよび物理カレンシーが確立されます。検索された最後のレコードが現在のレコードになります。このレコードは、フィルター条件を満たして取得されたレコードか、またはフィルター条件を満たさないために拒否されたレコードのいずれかです。
メモ
トランザクショナル インターフェイスでは、Get Previous Extended オペレーションの後に Delete または Update オペレーションを実行することはできません。現在のレコードは検索された最後のレコードであるため、アプリケーションには、意図したレコードを適切に削除または更新しているかどうかを確認する方法がありません。
 Get Previous(7) |
 Insert(2) |
|