1

最近有 2 次,与以下基本相同的代码未能正确执行。

在同一时间范围内,它也会正常执行数百次。

有两次打印单据,但没有记录添加到数据库中,也没有向用户报告错误。

我无法理解这怎么可能。

发生错误的计算机通过有线网络连接到一个共享的 Jet 数据库,其中大约有 8 台计算机。

On Error GoTo ErrorHandler1

BeginTrans
Dim RS as RecordSet
Dim strRS as string

strRS = "Select * from Blah"

Set RS = DB.OpenRecordset(strRS)

RS.AddNew
RS.Fields("Date1").value =  Now
RS.Fields("OpID").value =  intOpId
RS.Update                              

PrintSlip Now, intOpId                 
CommitTrans

Exit Sub

ErrorHandler1:
Rollback
MsgBox "There has been an error"

他们最近用新的电缆和机器升级了他们的网络,但我看不出有任何原因,特别是为什么这可能是问题所在。

4

1 回答 1

0

QueryDef您可以使用对象来添加记录,而不是依赖于引发的错误,然后测试.RecordsAffected属性以查看实际添加了多少记录。

这里有一些细节: 如何从 Access VBA 中的更新查询提示中获取值?

总结一下:

  1. 创建一个带有两个参数[TheDate]和的追加查询[TheOpID]
  2. 运行如下所示的代码:

Dim qdf As New QueryDef
Set qdf = DB.QueryDefs("qappMyCoolParameterQuery")
With qdf
    !TheDate = Now
    !TheOpID = intOpId
    .Execute
    If .RecordsAffected = 0 Then
        'Freak Out, alert user, etc
    End If
End With
于 2013-03-02T16:39:24.333 回答