2014-01-23 3 views
1

Ms 액세스 쿼리를 열어 레코드 수를 얻을 수 없습니다. 다음 코드를 사용합니다.MS Access의 DAO 메소드

Private Sub CmdGetData_Click() 
Dim WRK As Workspace 
Dim db As DAO.Database 
Dim rs As DAO.Recordset 
Dim StrSql As String 

Set WRK = DBEngine.Workspaces(0) 
Set db = CurrentDb 
StrSql = "select * from [QrySalePatti]" 

Set rs = db.OpenRecordset(StrSql, dbOpenDynaset) 

Do While (Not rs.EOF) 
    rs.MoveFirst 
    rs.MoveLast 
    MsgBox rs.RecordCount 
Loop 

exitRoutine: 
If Not (db Is Nothing) Then 
    db.Close 
    Set db = Nothing 
End If 

Set WRK = Nothing 
End Sub 
+1

Welcome to StackOverflow. 문제의 코드를 추가하는 데 성공했지만 중요한 세부 사항은 여전히 ​​누락되었습니다. 프로그램의 * 예상 * 출력은 무엇이며 실제 출력은 무엇입니까? 해당 정보를 추가 하시려면 질문 아래의'edit' 링크를 사용하십시오. – Heinzi

답변

1

당신은 RecordCount을 얻을 수있는 Do While 루프를 필요가 없습니다. 당신의 목표는 QrySalePatti에서 행을 계산하는 전용의 경우는

Set rs = db.OpenRecordset(StrSql, dbOpenDynaset) 
With rs 
    If Not (.BOF And .EOF) Then 
     .MoveLast 
    End If 
    MsgBox .RecordCount 
End With 

그러나, 당신은 SELECT Count(*) 쿼리를 사용하고 반환 된 값을 읽을 수 있습니다.

StrSql = "SELECT Count(*) AS row_count FROM [QrySalePatti]" 
Set rs = db.OpenRecordset(StrSql) 
MsgBox rs!row_count 

또는 DCount 표현을 사용할 수 있습니다.

MsgBox DCount("*", "QrySalePatti")