3

テーブルにデータを入力するために使用DoCmd.TransferSpreadsheetしています。このコマンドは、フォームのボタンを使用して呼び出されています。転送が完了したら、追加されたレコードの数をユーザーに通知したいと思います。私が使用するこれを実行するためdb.OpenRecordset("select * from tblImport")MsgBox(rs.RecordCount)
、問題は、転送が完了する前にレコードカウントが呼び出されていることです。これを同期的に呼び出す方法はありますか?

これが完全なコードです

Private Sub cmdVIT_Click()
On Error Resume Next

Dim strPath As String
Dim filePicker As FileDialog
Dim db As DAO.Database
Dim rs As DAO.Recordset

Set db = CurrentDb

Set filePicker = Application.FileDialog(msoFileDialogFilePicker)

With filePicker
    .AllowMultiSelect = False
    .ButtonName = "Select"
    .InitialView = msoFileDialogViewList
    .Title = "Select File"

    With .Filters
        .Clear
        .Add "All Files", "*.*"
    End With
    .FilterIndex = 1

    .Show
End With

strPath = filePicker.SelectedItems(1)
Debug.Print strPath
DoCmd.TransferSpreadsheet TransferType:=acImport, SpreadsheetType:=acSpreadsheetTypeExcel12, TableName:="tblImport", FileName:=strPath, HasFieldNames:=True
Set rs = db.OpenRecordset("select * from tblImport")

MsgBox rs.RecordCount & " records"
End Sub
4

2 に答える 2

5

追加の行が必要です:

Set rs = db.OpenRecordset("select * from tblImport")
'Populate recordset
rs.MoveLast
MsgBox rs.RecordCount & " records"
于 2013-01-03T15:05:50.133 に答える
2

に含まれる行数を表示したいtblImport。その情報を提供するためにレコードセットは必要ないと思います。これらのいずれかを試してください...

MsgBox CurrentDb.TableDefs("tblImport").RecordCount & " records"
MsgBox DCount("*", "tblImport") & " records"

ただし、レコードセットを使用する必要がある場合、または単に実行したい場合は、のより高速なアプローチを使用してOpenRecordsetください。

Set rs = db.OpenRecordset("tblImport", dbOpenTable, dbReadOnly)
rs.MoveLast
MsgBox rs.RecordCount & " records"
于 2013-01-03T18:17:16.123 に答える