使用方法
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