下面代码 出现停在rs.Update上 但按F5可以继续运行 但再运行几条又不行了 为什么(难道是我用conn\ conn2 同时打开一个表不行吗)
If conn.State = adStateClosed Then
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=d:\file\" & Hisyyyy & ".mdb"
conn.Open
End If
conn.Execute "insert into " & HisMM & " (sent,JCD_Num,ttime,freq,Cq,flag_cq,v5,flag_v5,modulation,flag_mod,temp) values (" & False & "," & Here_Upload.JCD_Num & ",'" & Here_Upload.Time_cj & "'," & Here_Upload.Freqency & "," & Here_Upload.Cq & "," & Here_Upload.Alarm_Cq & "," & Here_Upload.Volt5 & "," & Here_Upload.Alarm_Volt5 & "," & Here_Upload.Module & "," & Here_Upload.Alarm_Module & "," & Here_Upload.Temperature & ")"If conn2.State = adStateClosed Then
conn2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=d:\file\" & Hisyyyy & ".mdb"
conn2.Open
End IfDebug.Print rs.State
rs.CursorLocation = adUseClient
rs.Open "select top 10 * from " & HisMM & " where sent=0", conn2, 3, 3 'sent是布儿型
For i = 1 To rs.RecordCount
If Not rs.EOF Then
'取出每个字段的数据 赋值给一个结构 (代码略)
rs.Fields("sent").Value = True
Debug.Print rs.Fields("myid").Value ‘myid为自动编号
rs.Update '无法为更新定位行 一些值可能在最后一次读取后已经更改
rs.MoveNext
End If
Next i
'rs.UpdateBatch adAffectCurrent
rs.Close
If conn.State = adStateClosed Then
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=d:\file\" & Hisyyyy & ".mdb"
conn.Open
End If
conn.Execute "insert into " & HisMM & " (sent,JCD_Num,ttime,freq,Cq,flag_cq,v5,flag_v5,modulation,flag_mod,temp) values (" & False & "," & Here_Upload.JCD_Num & ",'" & Here_Upload.Time_cj & "'," & Here_Upload.Freqency & "," & Here_Upload.Cq & "," & Here_Upload.Alarm_Cq & "," & Here_Upload.Volt5 & "," & Here_Upload.Alarm_Volt5 & "," & Here_Upload.Module & "," & Here_Upload.Alarm_Module & "," & Here_Upload.Temperature & ")"If conn2.State = adStateClosed Then
conn2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=d:\file\" & Hisyyyy & ".mdb"
conn2.Open
End IfDebug.Print rs.State
rs.CursorLocation = adUseClient
rs.Open "select top 10 * from " & HisMM & " where sent=0", conn2, 3, 3 'sent是布儿型
For i = 1 To rs.RecordCount
If Not rs.EOF Then
'取出每个字段的数据 赋值给一个结构 (代码略)
rs.Fields("sent").Value = True
Debug.Print rs.Fields("myid").Value ‘myid为自动编号
rs.Update '无法为更新定位行 一些值可能在最后一次读取后已经更改
rs.MoveNext
End If
Next i
'rs.UpdateBatch adAffectCurrent
rs.Close
rs.Fields("sent").Value = True
rs.Update
rs.MoveNext
loop
vb的adodb打开的时候需要有打开参数的.如果用默认的方式打开是不允许update的.不知道这个是不是这样.
加了
conn2.CursorLocation = adUseClient
还是不行 报同样的错If conn2.State = adStateClosed Then
conn2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=d:\file\" & Hisyyyy & ".mdb"
conn2.Open
End If
TO (数码辣椒)
用了批处理还是报同样的错
rs.CursorType = adOpenDynamic
rs.CursorLocation = adUseClient
rs.OpenIf rs.RecordCount<>0 then
For i = 1 To rs.RecordCount
rs.Fields("sent").Value = True
Debug.Print rs.Fields("myid").Value
rs.Update
rs.MoveNext
Next i
End If
rs.CursorType = adOpenDynamic
rs.CursorLocation = adUseClient
rs.OpenIf rs.RecordCount<>0 then
rs.MoveFirst
For i = 1 To rs.RecordCount
rs.Fields("sent").Value = True
Debug.Print rs.Fields("myid").Value
rs.Update
rs.MoveNext
Next i
End If
前面加上if rs.state=adstateopen then rs.close
同样的If conn2.State = adStateClosed Then
改为If conn2.State = adStateOpen Then cnn2.close
试试!
41
42
43 相同
43 相同
44
45
46 相同
46 相同
47
48
奇怪的是当我单步调试时就不会出现这种情况
If conn2.State = adStateClosed Then
conn2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=d:\file\" & Hisyyyy & ".mdb"
conn2.Open
End If
If rs.RecordCount <> 0 Then
rs.MoveFirst
For i = 1 To rs.RecordCount
If Not rs.EOF Then
conn2.Execute "update " & HisMM & " set Sent=True where myid=" & rs.Fields("myid").Value
Debug.Print rs.Fields("myid").Value
rs.MoveNext
End If
Next i
rs.Close
End If
If rs.State <> adStateClosed Then rs.Close
》奇怪的是当我单步调试时就不会出现这种情况
》If conn2.State = adStateClosed Then
》 conn2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=d:\file\" & Hisyyyy & ".mdb"
》 conn2.Open
》End If
这个时候如果conn2的状态为打开,不就不执行了啊
If conn2.State = adStateOpen Then cnn2.close ‘判断当前为打开,则关闭,然后在下面再打开
代码格式不好
最好每次打开表时都先判断其状态,先关闭,再打开,不要同时打开