ヘッダーをスキップ
Oracle® Objects for OLE開発者ガイド
11gリリース2 (11.2) for Microsoft Windows
B58887-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

MoveFirst、MoveLast、MoveNextおよびMovePreviousメソッド

説明

指定されたダイナセット内の最初、最後、次または前の行にカーソル位置を変更します。これらの移動メソッドは、削除された行をスキップして、有効な次の行や前の行などにカーソルを移動します。

使用方法

oradynaset.MoveFirst
oradynaset.DbMoveFirst
oradynaset.MoveLast
oradynaset.DbMoveLast  
oradynaset.MovePrevious
oradynaset.DbMovePrevious  
oradynaset.MoveNext
oradynaset.DbMoveNext  

備考

データ・コントロール・ボタンは(左から右または上から下へ)MoveFirstMovePreviousMoveNextおよびMoveLastの各メソッドにマップされます。データ・コントロール・ボタンの使用時は、BOFおよびEOFプロパティはTRUEになりません。

最初または最後のレコードがカレント・レコードの場合は、MoveFirstメソッドまたはMoveLastメソッドを使用してもレコードは移動しません。ダイナセットに対してMoveLastメソッドを使用すると、問合せが強制終了します。

MovePreviousメソッドの使用時、最初のレコードがカレント・レコードの場合は、カレント・レコードは存在せず、BOFがTRUEになります。MovePreviousメソッドをもう一度使用すると、BOFTRUEのままですが、エラーが発生します。MoveNextメソッドの使用時、最後のレコードがカレント・レコードの場合は、カレント・レコードは存在せず、EOFがTRUEになります。MoveNextメソッドをもう一度使用すると、EOFはTRUEのままですが、エラーが発生します。ORADYN_NO_MOVEFIRSTオプションを使用してダイナセットが作成された場合、ダイナセットが空かどうかに関係なく、BOFおよびEOFはTRUEになることに注意してください。

ダイナセットのオープン時、BOFFALSEで、最初のレコードがカレント・レコードです。ダイナセットが空の場合、BOFおよびEOFは両方ともTRUEで、カレント・レコードは存在しません。

EditまたはAddNew操作が保留中のときに、データ・コントロールを介してMoveメソッドのいずれかを間接的に使用すると、Updateメソッドが自動的にコールされます。ただし、このメソッドはValidateイベント中に停止できます。

EditまたはAddNew操作が保留中のときに、データ・コントロールを介さずにMoveメソッドのいずれかを直接使用すると、保留中のEditまたはAddNew操作によって、既存の変更内容が失われます。ただし、エラーは発生しません。

データはデータベースから必要に応じてフェッチされるため、MoveFirst操作、MoveNext操作の順に実行すると、追加データの先読みを必要とすることなく、ミラー化(キャッシュ)されたローカル・セットが増分作成されます。ただし、MoveLast操作を実行するには、問合せ全体が評価されてローカルに格納される必要があります。

ダイナセットがデータ・コントロールに付加されている場合、これらのメソッドは、まずデータ・コントロールのValidateイベントに、レコードの移動が行われることを通知します。Validateハンドラは移動要求を拒否でき、その場合、要求は無視されます。レコード・ポインタが正常に移動されると、データ・コントロールに付加されているすべてのカスタム・コントロールに、新しいレコード位置が自動的に通知されます。

この例では、MoveFirstMoveNextMoveLastおよび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