我遇到一种情况,我需要运行从MS-Access 2010 VBA到SQL Server 2012的值的追加/插入查询,我可以正常工作,但是将来可能需要处理1000多个记录,因此,我需要确保我的代码可以容纳该代码。我的想法是使用取模来确定何时击中第1000条记录以; insert ....
在传递字符串中添加新的字符串,不确定是否这是最好的方法,但是我一直在努力工作.AbsolutePosition
。
到目前为止,我有:
Dim rs As DAO.Recordset
Dim strsql As String
Set rs = CurrentDb.OpenRecordset("MyTable")
strsql = "insert into [dbo].[SomeTable](field1, field2) values"
If Not (rs.EOF And rs.BOF) Then
rs.MoveFirst
Do Until rs.EOF = True
msgbox rs.AbsolutePosition 'error with whatever I do here
'Something like the below is what I actually want to get to
'If rs.AbsolutePosition Mod 999 = 0 Then strsql = Left(strsql, Len(strsql) - 1) & "; insert into [dbo].[SomeTable](field1, field2) values"
strsql = strsql & " (" & rs!field1 & "," & rs!field2 & "'),"
rs.MoveNext
Loop
strsql = Left(strsql, Len(strsql) - 1) & ";"
Else
MsgBox "No Data"
Exit Sub
End If
尝试返回或使用进行计算时,此对象类型不支持错误操作 rs.AbsolutePosition
从文档中:
AbsolutePosition属性在仅向前类型的Recordset对象上,或者在通过对Microsoft Access数据库引擎连接的ODBC数据库进行传递查询而打开的Recordset对象上不可用。
为什么不简单地使用运行计数器呢?
Do Until rs.EOF = True
i = i + 1
If i Mod 1000 = 0 Then
' ...
编辑
/失败。您rs
不是来自传递查询,所以这不是问题。但是,运行计数器似乎是最简单的选择。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句