適用対象
説明
指定されたダイナセット内の最初、最後、次または前の行にカーソル位置を変更します。これらの移動メソッドは、削除された行をスキップして、有効な次の行や前の行などにカーソルを移動します。
使用方法
oradynaset.MoveFirst oradynaset.DbMoveFirst
oradynaset.MoveLast oradynaset.DbMoveLast
oradynaset.MovePrevious oradynaset.DbMovePrevious
oradynaset.MoveNext oradynaset.DbMoveNext
備考
データ・コントロール・ボタンは(左から右または上から下へ)MoveFirst、MovePrevious、MoveNextおよびMoveLastの各メソッドにマップされます。データ・コントロール・ボタンの使用時は、BOFおよびEOFプロパティはTRUEになりません。
最初または最後のレコードがカレント・レコードの場合は、MoveFirstメソッドまたはMoveLastメソッドを使用してもレコードは移動しません。ダイナセットに対してMoveLastメソッドを使用すると、問合せが強制終了します。
MovePreviousメソッドの使用時、最初のレコードがカレント・レコードの場合は、カレント・レコードは存在せず、BOFがTRUEになります。MovePreviousメソッドをもう一度使用すると、BOFはTRUEのままですが、エラーが発生します。MoveNextメソッドの使用時、最後のレコードがカレント・レコードの場合は、カレント・レコードは存在せず、EOFがTRUEになります。MoveNextメソッドをもう一度使用すると、EOFはTRUEのままですが、エラーが発生します。ORADYN_NO_MOVEFIRSTオプションを使用してダイナセットが作成された場合、ダイナセットが空かどうかに関係なく、BOFおよびEOFはTRUEになることに注意してください。
ダイナセットのオープン時、BOFはFALSEで、最初のレコードがカレント・レコードです。ダイナセットが空の場合、BOFおよびEOFは両方ともTRUEで、カレント・レコードは存在しません。
EditまたはAddNew操作が保留中のときに、データ・コントロールを介してMoveメソッドのいずれかを間接的に使用すると、Updateメソッドが自動的にコールされます。ただし、このメソッドはValidateイベント中に停止できます。
EditまたはAddNew操作が保留中のときに、データ・コントロールを介さずにMoveメソッドのいずれかを直接使用すると、保留中のEditまたはAddNew操作によって、既存の変更内容が失われます。ただし、エラーは発生しません。
データはデータベースから必要に応じてフェッチされるため、MoveFirst操作、MoveNext操作の順に実行すると、追加データの先読みを必要とすることなく、ミラー化(キャッシュ)されたローカル・セットが増分作成されます。ただし、MoveLast操作を実行するには、問合せ全体が評価されてローカルに格納される必要があります。
ダイナセットがデータ・コントロールに付加されている場合、これらのメソッドは、まずデータ・コントロールのValidateイベントに、レコードの移動が行われることを通知します。Validateハンドラは移動要求を拒否でき、その場合、要求は無視されます。レコード・ポインタが正常に移動されると、データ・コントロールに付加されているすべてのカスタム・コントロールに、新しいレコード位置が自動的に通知されます。
例
この例では、MoveFirst、MoveNext、MoveLastおよびMovePreviousの各メソッドを使用してダイナセット内のレコードを移動する方法を示します。このコードをコピーして、フォームの定義セクションに貼り付けてください。次に[F5]を押します。
Sub Form_Load ()
'Declare variables
Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraDynaset As OraDynaset
'Create the OraSession Object.
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
'Create the OraDatabase Object by opening a connection to Oracle.
Set OraDatabase = OraSession.OpenDatabase("ExampleDb", "scott/tiger", 0&)
'Create the OraDynaset Object.
Set OraDynaset = OraDatabase.CreateDynaset("select empno, ename from emp", 0&)
MsgBox "Employee #" & OraDynaset.Fields("empno").value & ", " & _
OraDynaset.Fields("ename").value
'Move to the next record and display it.
OraDynaset.MoveNext
MsgBox "Employee #" & OraDynaset.Fields("empno").value & ", " & _
OraDynaset.Fields("ename").value
'Move to the last record and display it.
OraDynaset.MoveLast
MsgBox "Employee #" & OraDynaset.Fields("empno").value & ", " & _
OraDynaset.Fields("ename").value
'Move to the previous record and display it.
OraDynaset.MovePrevious
MsgBox "Employee #" & OraDynaset.Fields("empno").value & ", " & _
OraDynaset.Fields("ename").value
End Sub