今日は、Recordset オブジェクトのいくつかのメソッドについて説明しましょう。
1. AddNew メソッドは、Recordset オブジェクトを更新できる新しいレコードを作成します。
Recordset.AddNew FieldList、値
フィールドリスト オプション。単一の名前、一連の名前、または新しいレコード内のフィールドの序数位置。
値はオプションです。新しいレコードのフィールドの単一または一連の値。 Fields が配列の場合、Values も同じ数のメンバーを持つ配列である必要があります。そうでない場合はエラーが発生します。フィールド名の順序は、各配列内のフィールド値の順序と一致する必要があります。
私たちは通常、
rs.addnew
rs("xx")=xx
rs("xx")=xx
rs.アップデート
即時更新モード (Update メソッドが呼び出されると、プロバイダーは基になるデータ ソースに変更をすぐに書き込みます) では、パラメーターを指定せずに AddNew メソッドを呼び出すと、EditMode プロパティが adEditAdd に設定されることに注意してください。プロバイダーはフィールド値への変更をローカルにキャッシュします。 Update メソッドを呼び出して新しいレコードをデータベースに渡し、EditMode プロパティを adEditNone にリセットします。 Fields パラメーターと Values パラメーターが渡された場合、ADO は新しいレコードを (Update を呼び出すことなく) すぐにデータベースに渡し、EditMode プロパティの値は変更されません (adEditNone)。
ASP で ADO の AddNew メソッドを使用することと、「Insert into...」ステートメントを直接使用することの違いは何なのか疑問に思われるかもしれません。どちらの方法が良いですか?回答: ADO の AddNew メソッドは、「Insert into」ステートメントのみをカプセル化します。そのため、大量のデータを操作する場合、SQL ステートメントを直接使用すると、ADO の「変換」時間が短縮されるため、データ アクセスが大幅に高速化されます。
2. Delete メソッドは、現在のレコードまたはレコード グループを削除します。
Recordset.Delete AffectRecords
AffectRecords AffectEnum 値は、Delete メソッドの影響を受けるレコードの数を決定します。
AdAffect現在のデフォルト。現在のレコードのみを削除します。
AdAffectGroup は、現在の Filter プロパティ設定を満たすレコードを削除します。このオプションを使用するには、Filter プロパティを有効な事前定義定数のいずれかに設定する必要があります。
adAffectAll はすべてのレコードを削除します。
adAffectAllChapters すべてのサブセット レコードを削除します。
即時更新モードを使用すると、データベースが即時に削除されます。それ以外の場合、レコードはキャッシュから削除するようにマークされ、Update メソッドが呼び出されたときに実際の削除が行われます。
3. Update メソッドは、Recordset オブジェクトの現在のレコードに加えられたすべての変更を保存します。
Recordset.Update フィールド、値
フィールドはオプションです。単一の名前を表すバリアント型、または変更する必要があるフィールド (1 つ以上) の名前とシリアル番号の位置を表すバリアント型配列。
値はオプションです。単一の値を表すバリアント型、または新しいレコードのフィールド (単一または複数) の値を表すバリアント型の配列。
現在のレコードに加えた変更をキャンセルする場合、または新しく追加されたレコードを破棄する場合は、CancelUpdate メソッドを呼び出す必要があります。
4.CancelUpdateメソッド
レコードセット.キャンセル更新
現在のレコードへの変更をキャンセルするか、新しく追加されたレコードを破棄するには、CancelUpdate メソッドを使用します。 Update メソッドの呼び出し後は、現在のレコードまたは新しいレコードへの変更を元に戻すことはできません。CancelUpdate メソッドの呼び出し時に新しいレコードが追加された場合、AddNew が呼び出される前の現在のレコードが再び現在のレコードになります。現在のレコードが変更されていないか、新しいレコードが追加されている場合、CancelUpdate メソッドを呼び出すとエラーが生成されます。
5. Find メソッドは、指定された基準を満たすレコードを Recordset から検索します。基準が満たされる場合、レコードセットの位置は見つかったレコードに設定され、そうでない場合は、位置はレコードセットの末尾に設定されます。
検索 (基準、SkipRows、searchDirection、開始)
criteria 列名、比較演算子、および検索の値を指定するステートメントを含む文字列。
SkipRows オプションの長い整数値。デフォルト値は 0 で、検索を開始する現在の行または開始ブックマークのオフセットを指定します。
searchDirection 検索を現在の行で開始するか、次の有効な行で開始するかを指定するオプションの SearchDirectionEnum 値。その値は adSearchForward または adSearchBackward です
。検索がレコードセットの先頭で終了するか末尾で終了するかは、searchDirection 値によって決まります。
start オプションのバリアントブックマーク。検索の開始位置として使用されます。
基準「比較演算子」は、">" (より大きい)、"<" (より小さい)、"= (等しい)、">= (以上)、"<= (より小さい) です。または等しい)、「<>」
(等しくない)、または「like」(パターン一致)。条件の値は、文字列、浮動小数点数、または日付にすることができます。文字列値は一重引用符で区切られます (例: "state = 'WA'")。
日付値は「#」(数字記号)で区切られます(例:「start_date > #7/22/97#」)。
find は複数のフィールドをサポートしていないことに注意してください。しかし、フィルターを使用するとそれを実現できます。 "name='abc'"AND "city='sh'" は許可されません。
6. Move メソッドは、Recordset オブジェクト内の現在のレコードの位置を移動します。
Recordset.NumRecords を移動、開始
NumRecords 現在のレコード位置から移動するレコードの数を指定する符号付き長整数式。
開始オプション、文字列またはバリアント型。ブックマークの計算に使用されます。次の値のいずれかを指定することもできます。
AdBookmark現在のデフォルト。現在のレコードから開始します。
AdBookmarkFirst は最初のレコードから始まります。
AdBookmarkLast は最後のレコードから始まります。
注意すべき点は次のとおりです。
(1) NumRecords パラメータが 0 より大きい場合、現在のレコード位置は前方 (レコード セットの末尾に向かって) 移動します。 NumRecords が 0 より小さい場合、現在のレコード位置は後方 (レコードセットの先頭に向かって) 移動します。
(2) 空の Recordset オブジェクトから Move メソッドを呼び出すと、エラーが発生します。
(3) Move 呼び出しによって現在のレコードの位置が最初のレコードの前に移動される場合、ADO は現在のレコードをレコードセットの最初のレコードの前に配置します (BOF が True)。 BOF プロパティがすでに True のときに後方に移動しようとすると、エラーが生成されます。Move 呼び出しによって現在のレコードの位置が末尾レコードの後に移動されると、ADO は現在のレコードをレコードセットの末尾レコードの後に配置します (EOF が True)。 EOF 属性がすでに True のときに先に進もうとすると、エラーが生成されます。
7. MoveFirst、MoveLast、MoveNext、および MovePrevious メソッドは、指定された Recordset オブジェクト内の最初、最後、次、または前のレコードに移動し、そのレコードを現在のレコードにします。
レコードセット。{MoveFirst | MovePrevious |
注意すべき点は次のとおりです。
(1) MoveNext メソッドを使用して、現在のレコードを 1 レコード前に (Recordset の最後に向かって) 移動します。最後のレコードが現在のレコードで、MoveNext メソッドが呼び出された場合、ADO は Recordset の末尾レコードの後に現在のレコードを設定します (EOF が True)。 EOF 属性がすでに True のときに先に進もうとすると、エラーが生成されます。
(2) MovePrevious メソッドを使用して、現在のレコード位置を 1 レコード後方 (レコード セットの先頭方向) に移動します。 Recordset オブジェクトは、後方カーソル移動をサポートする必要があります。サポートしない場合は、メソッド呼び出しでエラーが発生します。最初のレコードが現在のレコードで、MovePrevious メソッドが呼び出された場合、ADO は現在のレコードを Recordset の最初のレコードの前に設定します (BOF が True)。 BOF 属性が True の場合、後方に移動するとエラーが発生します。
8. Clone メソッドは、既存の Recordset オブジェクトと同一の重複した Recordset オブジェクトを作成します。必要に応じて、レプリカが読み取り専用であることを指定します。
rstDuplicate = rstOriginal.Clone を設定します。
rstDuplicate 作成される重複 Recordset オブジェクトを識別するオブジェクト変数。
rstOriginal オブジェクト変数は、コピーされる Recordset オブジェクトを識別します。
Clone メソッドを使用して、Recordset オブジェクトの複数のコピーを作成します。これは、特定のレコード グループに複数の現在のレコードを保持する場合に便利です。 Clone メソッドを使用すると、最初の定義と同じ定義を持つ新しい Recordset オブジェクトを作成して開くよりもはるかに効率的です。
つまり
rs.open exec,conn,1,1
rs2.open exec,conn,1,1
このように書き換えるべきです
rs.open exec,conn,1,1
rs2=rs.clone では
次の点に注意してください。
(1) 新規作成したコピーのカレントレコードが先頭レコードに設定されます。
(2) 元の Recordset を閉じても、そのコピーは閉じられません。また、コピーを閉じても、元の Recordset またはその他のコピーは閉じられません。
9. Close メソッドは、開いているオブジェクトと関連オブジェクトを閉じます。
オブジェクト.閉じる
注意すべき点は次のとおりです。
(1) 関連するすべてのシステム リソースを解放するために、Close メソッドを使用して Recordset オブジェクトを閉じます。オブジェクトを閉じてもメモリから削除されません。プロパティ設定を変更して、
後で再度開くことができます。メモリからオブジェクトを完全に削除するには、オブジェクト変数を Nothing に設定します。
(2) 即時更新モードで編集している場合、Close メソッドを呼び出すとエラーが発生するため、Update メソッドまたは CancelUpdate メソッドを呼び出してください。
10. オープンメソッド、なぜこれを最後に言うのですか? 前の属性メソッドが明確ではないため、CursorType パラメーターが理解できません。
Recordset.Open Source、ActiveConnection、CursorType、LockType、オプション
Recordset オブジェクトは、Source プロパティを通じて Command オブジェクトに接続できます。 Source パラメーターには、コマンド オブジェクト名、SQL コマンド、指定されたデータ テーブル名、またはストアド プロシージャを指定できます。このパラメーターを省略した場合、システムは Recordset オブジェクトの Source プロパティを使用します。 ActiveConnection
Recordset オブジェクトは、ActiveConnection プロパティを通じて Connection オブジェクトに接続できます。ここでの ActiveConnection は、Connection オブジェクト、または
データベース
接続情報 (ConnectionString) を含む文字列パラメータの文字列です。CursorType
Recordset オブジェクトの Open メソッドの CursorType パラメータは、データが開始されるカーソルの種類を示します。これには、adOpenForwardOnly、adOpenKeyset、adOpenDynamic、ad
OpenStatic が含まれます。これらは次のように説明されます。
---------- ---------- -------------------------------------- -----
定数定数値の
説明- -------------------------------------- ---------- ----------
adOpenForwardOnly 0 デフォルト値。前方のみに移動できるカーソルを開始します (前方のみ)。
adOpenKeyset 1 は、キーセット タイプのカーソルを開始します。
adOpenDynamic 2 は、ダイナミック タイプのカーソルを開始します。
adOpenStatic 3 は、静的タイプのカーソルを開始します。
-------------------------------------------------- -----------
上記のカーソルの種類は、Recordset オブジェクトのすべてのプロパティとメソッドに直接影響します。次のリストでは、それらの違いについて説明します。
レコードセットのプロパティ adOpenForwardOnly adOpenKeyset adOpenDynamic adOpenStatic
AbsolutePage サポートされません サポートされません 読み取り可能
および書き込み可能 読み取り可能および書き込み可能 AbsolutePosition サポートされません サポートされません 読み取り可能および書き込み
可能 読み取り可能および書き込み可能 BOF 読み取り専用 読み取り専用 読み取り専用
CursorType 読み取り-書き込み 読み取り-書き込み 読み取り-書き込み 読み取り-書き込み
EOF 読み取り専用 読み取り-only 読み取り専用
Filter 読み取りおよび書き込み 読み取りおよび書き込み 読み取りおよび書き込み 読み取りおよび書き込み
LockType 読み取りおよび書き込み 読み取りおよび書き込み 読み取りおよび書き込み 読み取りおよび書き込み
PageCount サポートされません サポートされません 読み取り専用 読み取り専用
PageSize 読み取りおよび書き込み 読み取りおよび書き込み 読み取りおよび書き込み 読み取りWrite
RecordCount サポートされていない サポートされていない 読み取り専用 読み取り
専用 AddNew サポート
されている サポートされている サポートされている サポートされている CancelBatch サポートされている サポートされている サポートされている サポートされている CancelUpdate サポートされている サポートさ
れ
て
いる サポートされている サポートされている サポートされている サポートされている
サポートされているサポートされている サポート
されている サポートされている
MoveFirst サポートされている サポート
されている サポートされている サポートされている サポートされている MoveLast サポートされていない サポートされている サポートされている サポートサポート MoveNext サポート サポート サポート サポート サポート
MovePrevious サポートされていない サポート サポート サポート
オープン サポート サポート サポート サポート
更新サポート サポート サポート サポート
サポート UpdateBatch サポート サポート サポート
------ ------------------------ ---------------------------- ---------
Recordset オブジェクトの Open メソッドの LockType パラメータは、Lock タイプを指定します。このパラメータが省略された場合、システムは Recordset オブジェクトの LockType プロパティをデフォルト値として使用します。 LockType パラメータには、adLockReadOnly、adLockPrssimistic、adLockOptimistic、adLockBatchOptimistic などが含まれ、次のように説明されます。
定数値の説明
------------------------ ------ ---------------------
adLockReadOnly 1 デフォルト値、Recordset オブジェクトは読み取りで開始されます。 -only モードであり、AddNew、Update、および Delete メソッドを実行できません。
adLockPrssimistic 2 データ ソースの更新中、システムはデータの整合性を維持するために他のユーザーのアクションを一時的にロックします。
adLockOptimistic 3 データ ソースの更新中、システムは他のユーザーのアクションをロックせず、他のユーザーはデータを追加、削除、変更できます。
adLockBatchOptimistic 4 データ ソースが更新されているとき、他のユーザーはデータを追加、削除、または変更するには CursorLocation 属性を adUdeClientBatch に変更する必要があります。
注意すべき点は次のとおりです。
データ ソースがレコードを返さない場合、プロバイダーは BOF プロパティと EOF プロパティの両方を True に設定し、現在のレコードの位置を定義しません。カーソルの種類で許可されている場合は、空の Recordset オブジェクトに新しいデータを追加できます。