プロが教える店舗&オフィスのセキュリティ対策術

ADOで現在のレコードの次のレコードの値も取得するには?


アクセスに対してADOでデータを取得しているのですが
例えばテーブルに
フィールド1
あああ
いいい
ううう

と入ってる時に、1レコード目のあああの値を取得しているときに、同時に次のレコードのいいいの値も取得することは可能ですか?

Sub Sample()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Set cn = CurrentProject.Connection

rs.Open "SELECT * FROM テーブル1", cn, adOpenStatic, adLockPessimistic

For i = 1 To rs.RecordCount
MsgBox rs("フィールド1") '現在のレコード
MsgBox rs("フィールド1") + 1 '次のレコード
rs.MoveNext
Next

rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
End Sub

これだとダメなようです。

あああ
いいい
が表示されるようにしたいのですが、どうすればいいか教えてください。

A 回答 (2件)

rs.MoveNextなどでカレントレコードを変更しないかぎりは次のレコードの値を取得することはできません。




よくある手法で先読み法というのがあります。
1つ前の値を変数に退避しておく方法です。

Dim Field1 As String

Field1 = rs("フィールド1")
rs.MoveNext
For i = 2 To rs.RecordCount
MsgBox Field1
MsgBox rs("フィールド1")
Field1 = rs("フィールド1")
rs.MoveNext
Next
    • good
    • 1
この回答へのお礼

ありがとうございます。

お礼日時:2013/04/07 11:27

あああ


しかない場合の例外はどうする?

いまあるレコードが
あああ
いいい
ううう
えええ
なら、

あああ
いいい

いいい
ううう

ううう
えええ

で良いですか?



if rs.RecordCount > 2 then
 For i = 1 To rs.RecordCount-1
  MsgBox rs("フィールド1") '現在のレコード
  rs.MoveNext
  MsgBox rs("フィールド1") '次のレコード
 Next
else
 MsgBox rs("フィールド1") '現在のレコード
 rs.MoveNext
 MsgBox rs("フィールド1") '次のレコード
endif

でどうでしょう?
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2013/04/07 11:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A