Shu*_*ham 5 ms-access access-vba
我正在尝试获取表的记录数,如果count大于17,则创建一个新表.
Dim rst As DAO.Recordset
strSQL = "Select * from SKUS"
Set rst = db.OpenRecordset(strSQL)
If rst.RecordCount > 17 Then
Set tdf = db.CreateTableDef("161-0363")
Set fld = tdf.CreateField("SKUS", dbText, 30)
tdf.Fields.Append fld
Set fld = tdf.CreateField("Count", dbInteger)
tdf.Fields.Append fld
db.TableDefs.Append tdf
End If
Run Code Online (Sandbox Code Playgroud)
此代码不会创建新表,但是当我将if语句更改为this时,它的工作原理如下:
...
If rst.RecordCount > 0 Then
Set tdf = db.CreateTableDef("161-0363")
...
Run Code Online (Sandbox Code Playgroud)
所以RecordCount正在返回1,我想.为什么会这样?我知道桌子上有18行.
谁能帮我吗?
您必须强制记录集移动所有行以获得准确的计数.试试这个:
...
Set rst = db.OpenRecordset(strSQL)
rst.MoveLast
rst.MoveFirst
If rst.RecordCount > 17 Then
...
Run Code Online (Sandbox Code Playgroud)
除非您正在使用您未在代码段中显示的记录集执行其他操作,否则只需使用域计数功能检查记录计数即可简化代码:
If DCount("*", "SKUS") > 17 Then
Run Code Online (Sandbox Code Playgroud)