addnew 为啥不能插入新记录

addnew 为何不能插入新记录
Dim Cn As New ADODB.Connection
  Dim Rs As New ADODB.Recordset
  Dim cmd As New ADODB.Command
  Dim strr As String, I As Integer, CNT As Integer
  strr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=E:\WorkProject\VBProject\AccessOP\05.mdb"
   
  Cn.ConnectionString = strr
  Cn.ConnectionTimeout = 30
  Cn.CursorLocation = adUseClient
  Cn.Open strr
  Nowms ("打开时间:")
  CNT = 0
  For I = 1 To RNDREC
  strr = Text1.Text & CStr(I) & Chr(Int((90 - 65 + 1) * Rnd + 65))
  Rs.Open "select * from table1 where COM='" & strr & "'", Cn, adOpenStatic, adLockBatchOptimistic
  If Rs.RecordCount = 0 Then
  'Rs.AddNew
  'Rs.Fields(0).Value = strr
  'Rs.Fields(1).Value = Left(strr, 2)
  'Rs.Fields(2).Value = Right(strr, 2)
  'Rs.Fields(3).Value = Mid(strr, 1, 5)
  'Rs.Update
  cmd.ActiveConnection = Cn
  cmd.CommandText = "insert into table1(com,t1,t2,t3) values('" & strr _
  & "' , '" & Left(strr, 2) & "' , '" & Right(strr, 2) & "' , '" & Mid(strr, 1, 5) & "')"
  cmd.CommandType = adCmdText
  cmd.Execute
   
  CNT = CNT + 1
  End If
  Rs.Close
  Next

我用VB6.0和access2007开发平台。
现在发现如果用rs.addnew方法不能实现记录插入,而采用cmd.execute方法后却可以。请教高手们其中的原因?


------解决方案--------------------
Rs.Open "select * from table1 where COM='" & strr & "'", Cn, adOpenDynamic, adLockOptimistic