2

Access 2010 で VBA を使用していますが、奇妙な問題があります。テーブルからレコードを取得しようとしていますが、SELECT クエリは 1 つのレコードしか返しません。

テーブルには 3 つのレコードがありますが、レコードセットは最初の 1 つしか取得していません。

これが私のコードです。

Dim cc As String 
Dim DB As Database 
Dim rst As recordset 
Dim sqlstr As String 
Dim e As Integer 

cc = CmbClass.Text
If cc = "" Then Exit Sub 

sqlstr = "SELECT * FROM Students" 'WHERE CCode ='" & cc & "'"

Set DB = CurrentDb 
Set rst = DB.OpenRecordset(sqlstr) 
'Debug.Print rst.Fields(0)
e = rst.RecordCount 
Debug.Print e 
If e = 0 Then Exit Sub

e の値は常に 1 であり、3 ではありません。ご覧のとおり、最初はもっと複雑な SQL 文字列を持っていましたが、トラブルシューティングを試みながら最も基本的なものに切り詰めましたが、問題は解決しません。なぜこれが起こっているのか誰にも分かりますか?

ありがとう、

タム。

4

2 に答える 2

4

rst.MoveLast次のようにレコード数を確実に取得するには、メモリから a を発行する必要があります。

sqlstr = "SELECT * FROM Students" 'WHERE CCode ='" & cc & "'"

Set DB = CurrentDb 
Set rst = DB.OpenRecordset(sqlstr) 
rst.MoveLast
e = rst.RecordCount 

SELECT COUNT(*) FROM Studentsまた、レコードを移動してカウントを取得するのではなく、レコードセットの値を使用して読み取ることを検討することもできます。このクエリを使用すると、より効率的になります。

于 2012-08-12T05:08:51.190 に答える
3

別の方法はDCountです。

e = DCount("*","Students","CCode ='" & cc & "'")

本当に必要になるまで、レコードセットをいじってはいけません

于 2012-08-13T18:11:22.167 に答える