objaccess - Acceda al recuento de VBA TransferSpreadsheet
exportar formulario access a excel vba (2)
Desea mostrar la cantidad de filas contenidas en tblImport
. No creo que necesite un conjunto de registros para darle esa información. Pruebe uno de estos ...
MsgBox CurrentDb.TableDefs("tblImport").RecordCount & " records"
MsgBox DCount("*", "tblImport") & " records"
Sin embargo, si necesita o simplemente desea hacerlo con un conjunto de registros, use un enfoque más rápido para OpenRecordset
.
Set rs = db.OpenRecordset("tblImport", dbOpenTable, dbReadOnly)
rs.MoveLast
MsgBox rs.RecordCount & " records"
Estoy usando DoCmd.TransferSpreadsheet
para llenar una tabla. Este comando se llama usando un botón en un formulario. Después de que se complete la transferencia, quiero decirle al usuario cuántos registros se agregaron. Para intentar esto, utilizo db.OpenRecordset("select * from tblImport")
luego MsgBox(rs.RecordCount)
El problema es que se llama al conteo de registros antes de que se complete la transferencia. ¿Hay alguna forma de llamar esto sincrónicamente?
Aquí está el código completo
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
Necesitas una línea adicional:
Set rs = db.OpenRecordset("select * from tblImport")
''Populate recordset
rs.MoveLast
MsgBox rs.RecordCount & " records"