今日は Recordset オブジェクトのプロパティについて話しましょう
1. CursorType 属性
AdOpenForwardOnly: 前方カーソルのみ、デフォルト値。静的カーソルと同じですが、レコードを前方にのみスクロールできる点が異なります。レコードセット内で一方向の移動のみが必要な場合のパフォーマンスを向上させるために使用します。 (名前が示すとおり、このカーソルは前方にのみ移動できます。ただし、機能が制限されているため、システム リソースと併用すると非常に効率的です。)
AdOpenKeyset: キーセット カーソル。他のユーザーによって削除されたレコードにはレコードセットからアクセスできませんが、キーセット カーソルは、他のユーザーによって追加されたレコードを表示できない点を除いて動的カーソルと似ています。他のユーザーが変更したデータは引き続き参照できます。 (KeySet カーソルを使用すると、作成後に他のユーザーが加えた変更を確認できますが、他のユーザーが追加または削除したレコードは確認できません。)
AdOpenDynamic: 動的カーソル。他のユーザーによる追加、変更、削除を確認できます。プロバイダーによってサポートされていないブックマーク操作を除き、レコードセット内のすべての種類の移動が許可されます。 (このタイプのカーソルは強力で、ほとんどのシステム リソースを消費します。動的カーソルは、保存したレコード コレクションのすべての変更を確認できます。動的カーソルを使用しているユーザーは、他のユーザーが行った編集、追加、削除を確認できます。データ ソースから定期的にデータを取得することで、このタイプのカーソルがこの可視性をサポートできるようにするには、間違いなく大量のリソースが必要になります)。
AdOpenStatic: 静的カーソル。データの検索やレポートの生成に使用できるレコードのコレクションの静的コピー。さらに、他のユーザーによる追加、変更、削除は表示されません。 (静的クラス カーソルは、単なるデータのスナップショットです。つまり、RecordSet の作成後に他のユーザーが加えた変更は表示されません。このタイプのカーソルを使用すると、前後に移動できます。そのシンプルさのため、リソース要件は動的よりも小さいです!)
注: RecordSet を開いた後は、CursorType プロパティを変更することはできません。ただし、最初に RecordSet を閉じ、CursorType プロパティを変更してから RecordSet を再度開いた場合でも、カーソルの種類を効果的に変更できます。
2. LockType 属性 複数のユーザーが同時に変更できるデータベース アプリケーションでは、複数のユーザーが同じレコードを同時に操作するときに発生する可能性のある状況に対処する必要があります。これが起こると、あるユーザーが自分の変更を保存するときに他のユーザーの変更を知らずに上書きしてしまう可能性があるため、データの整合性が損なわれます。そのとき、あなたは何もしていないように感じます。この状況に対処するには。 ADO を使用すると、RecordSet オブジェクトを更新するときの同時イベント コントロールの種類と、ユーザーが編集中にレコードをロックする方法を決定できます。これは LockType 属性によって決定されます。この属性には 4 つの値があります。
adLockReadonly: デフォルト値、読み取り専用。データは変更できません。 (これは RecordSet のデフォルト値です。ロック方法をこの値に設定すると、Recordset を更新できなくなります。)
adLockPessimistic: 保守的なレコード ロック (エントリごと)。プロバイダーは、レコードの編集を確実に成功させるために必要なアクションを実行します。通常は、編集時にデータ ソース内のレコードをただちにロックします。 (このタイプのロックに設定されている場合、レコードはロックされ、編集が開始されてからレコードの更新がデータ プロバイダーに送信されるまでの間に編集するユーザーのみがアクセスできます。)
adLockOptimistic: オープン レコード ロック (レコードごと)。プロバイダーはオープン ロックを使用し、Update メソッドが呼び出された場合にのみレコードをロックします。 (レコードは、データがデータプロバイダーに送信された時点でのみロックされます。)
adlockBatchOptimistic: バッチ更新を開きます。即時更新モードではなくバッチ更新モードに使用されます。 (このタイプのロック モードに設定された RecordSet は、RecordSet のバッチ更新モードと呼ばれます。これにより、データを変更するために RecordSet を更新する速度が向上しますが、複数のレコードが同時に更新されるため、同時アクセスに関連する問題がさらに悪化します!)
3 ,AbsolutePage プロパティ
AbsolutePage 属性は、現在のレコードが配置されているページのページ番号を設定します。PageSize 属性を使用して、Recordset オブジェクトを論理ページに分割します (ただし、最後のページのレコード数は PageSize よりも小さい場合があります)。レコード数)。すべてのデータプロバイダーがこの属性をサポートしているわけではないため、注意して使用してください。
AbsolutePosition プロパティと同様に、AbsolutePage プロパティは 1 から始まります。現在のレコードが Recordset の最初の行である場合、AbsolutePage は 1 です。 AbsolutePage プロパティを設定して、指定したページのレコードの最初の行に移動できます。
4. AbsolutePosition 属性 RecordSet 内の現在のインジケーターの位置を決定する必要がある場合は、AbsolutePosition 属性を使用できます。
AbsolutePosition 属性の値は、1 から始まる最初の取引に対する現在のインジケーターの位置です。つまり、最初の取引の AbsolutePosition は 1 です。
RecordSet にアクセスする場合、RecordSet が毎回同じ順序で表示されるという保証はないことに注意してください。
AbsolutePosition を有効にするには、まずクライアント カーソル (ポインター) を使用するように設定する必要があります。 rs.CursorLocation=3
5. PageCount 属性 PageCount 属性を使用して、Recordset オブジェクトに含まれるデータの「ページ」数を決定します。ここでの「ページ」は、PageSize プロパティの設定と同じサイズのデータ レコードのコレクションです。最後のページのレコード数が PageSize の値より少ない場合でも、最後のページは 1 つのページとみなされます。ページ数。すべてのデータプロバイダーがこの属性をサポートしているわけではないことに注意してください。
6. PageSize 属性
PageSize 属性は、ADO がデータベースにアクセスするときにページを表示する方法を決定するためのキーです。これを使用して、論理「ページ」を形成するレコードの数を決定できます。 AbsolutePage プロパティを使用して、別の論理ページの最初のレコードに移動できるページ サイズを設定および作成します。 PageSize プロパティはいつでも設定できます。
7. RecordCount 属性 これも非常によく使用される重要な属性で、Recordset オブジェクトに含まれるレコードの数を確認するためによく使用されます。 RecordCount プロパティを使用して、Recordset オブジェクト内のレコードの数を確認します。 ADO がレコード数を判断できない場合、またはプロバイダーまたはカーソルの種類が RecordCount をサポートしていない場合、このプロパティは -1 を返します。閉じられた Recordset の RecordCount プロパティを読み取ると、エラーが生成されます。 Recordset オブジェクトのカーソルの種類は、レコード数を決定できるかどうかに影響します。 RecordCount プロパティは、前方専用カーソルの場合は -1、静的カーソルまたはキーセット カーソルの場合は実際の数、およびデータ ソースに応じて動的カーソルの場合は -1 または実際の数を返します。
8. BOF 属性と EOF 属性 通常、インジケーターが現在指している RecordSet の位置を知るために、BOF 属性と EOF 属性をチェックするコードを記述します。 Recordset オブジェクトにはレコードが含まれているか、移動されたレコード行が Recordset オブジェクトの範囲を超えているかどうかがわかります。
現在のレコードの位置が Recordset オブジェクトの最初の行より前にある場合、BOF プロパティは true を返し、それ以外の場合は false を返します。
現在のレコードの位置が Recordset オブジェクトの最後の行の後である場合、EOF プロパティは true を返し、それ以外の場合は false を返します。
(BOF と EOF はどちらも True で、RecordSet にレコードがないことを示します。)
9. Filter 属性は、Recordset 内のデータのフィルター条件を指定します。フィルターされた Recordset オブジェクト内のレコードを選択的にブロックします。が現在のカーソルになります。
これは、AbsolutePosition、AbsolutePage、RecordCount、PageCount など、現在のカーソルの戻り値に基づく他のプロパティに影響します。これは、Filter プロパティを
特定の
値に設定すると、現在のレコードが新しい値を満たす最初のレコードに移動するためです。
この属性は非常に便利だと思います。レコードセットを開いて特定の判断を行った後、レコードをフィルター処理する必要がある場合があります。つまり、レコードセットを閉じて、新しい SQL ステートメントで開く必要があるでしょうか。いいえ、フィルタリングには Filter 属性を使用します。たとえば、
rs.open exec,conn,1,1
if .... then rs.filter="name='xxx'"
の代わりに
rs.open exec,conn,1,1
もし...それなら
rs.close
exec=exec&" where name='xxx'"
rs.open exec,conn,1,1
終了する場合
実際、フィルターはさまざまな場所で使用する必要があります。これについては、今後の ASP スキルでも説明します。
明日は引き続き Recordset オブジェクトのメソッドについて説明します。