如何在开始插入之前从表中删除所有行?
答案 0 :(得分:2)
两件事。首先,DAO vs ADO几乎无关紧要。它们都可以通过Windows 7和AFAIK进行访问,没有计划将其删除。要么在Access中使用也可以。 其次,你可以这样做:
Public Sub Example()
With Access.CurrentDb
.Execute "DELETE Table2.* FROM Table2;"
.Execute "INSERT INTO Table2 ( fld1, fld2 ) SELECT Table1.ID, Table1.MyField FROM Table1;"
End With
End Sub
你可以这样:
Public Sub Example()
With Access.DoCmd
.RunSQL "DELETE Table2.* FROM Table2;"
.RunSQL "INSERT INTO Table2 ( fld1, fld2 ) SELECT Table1.ID, Table1.MyField FROM Table1;"
End With
End Sub
但是Execute方法会抛出更多信息性的错误消息(如果你还在乎,那就是DAO)。
答案 1 :(得分:1)
如果您正在编程vba,我假设您正在使用Adodb或仅使用ADO。 因此,为了删除表记录,您可以使用命令对象来执行此操作。
Dim cnn as Connection
Dim cmd as Command
Set cnn=new Connection()
cnn.ConnectionString="ConnectionString"
cnn.Open()
Set cmd=new Command()
cmd.ActiveConnection=cnn
cmd.CommandText="DELETE FROM MyTable"
cmd.Execute()
cnn.Close()
更新: 要使用ADO对象,您应该添加对ADODB库的引用
答案 2 :(得分:-1)
据我所知,DAO Recordsets没有有效的方法来清空表。如果它是一个小桌子,你可以删除逐个记录,但我会觉得很傻。我只是使用DoCmd.RunSQL来运行DELETE查询。当然,我通常会暂时将SetWarnings设置为False。
由于这与DAO是分开的,因此我会在正确打开记录集之前看到该操作。
答案 3 :(得分:-1)
请试试这个:
Do While Not rs.EOF
rs.Delete
rs.MoveNext
Loop