全部,
我有一个MS Access 2013应用程序。
它使用表单作为Oracle(Oracle Database 11g企业版11.2.0.3.0 - 64位生产)数据库的前端。
目标是能够更新所有活动的文本框(textbox.enabled = true)。
Oracle后端数据库中的单个表包含所有数据。对于没有此写冲突问题的表上的条目,它是相同的(据我所知)。该表有一个主键,由两个表组成:一个ID(一个名为SC_ID的数字)和一个名为SC_DT(datetime)的时间戳列。
这是一种连续的形式。我在工具栏的“创建表单”区域中使用了“多个项目”。我相信这意味着它以某种方式将它们绑定到后端表。
在某些记录上,总是相同的记录,我得到了写冲突。
我试过了
me.dirty=false
me.Requery
如果我尝试这样做,我会收到3197错误。
我还能做什么?我很想找到那些记录不同的方式,但它们似乎并不存在。
我在这篇文章中一遍又一遍地看着,我无法弄清楚任何其他方法。没有字段是位值或null。
Editing Record issues in Access / SQL (Write Conflict)
任何帮助将不胜感激! thx -blue
这是我的更新代码
Private Sub Command36_Click()
Dim isReOrder As Boolean
Dim tempstring1 As String
Dim tempstring2 As String
Dim tempstring3 As String
Dim tempstring4 As String
Dim tempstring5 As String
On Error GoTo Command36_OpenError
Me.Dirty = False
blnGood = True
Call DoCmd.RunCommand(acCmdSaveRecord)
isReOrder = False
tempstring1 = tempdirtySC_CALL_MBR_ID
tempstring2 = tempdirtySC_CALL_ASC_ID
tempstring3 = tempdirtySC_CALL_FST_NM
tempstring4 = tempdirtySC_CALL_LST_NM
tempstring5 = tempdirtySC_CALL_CHG_ENTITLEMENT
If ((Me.SC_CALL_ASC_ID.Value = "00") And (tempdirtySC_CALL_ASC_ID <> "00") And (tempdirtySC_CALL_ASC_ID <> "")) Then
ReOrderAccount Me.SC_CALL_MBR_ID.Value, Me.SC_CNTC_FST_NM.Value, Me.SC_CNTC_LST_NM.Value, tempdirtySC_CALL_ASC_ID, SC_ID.Value, Me.SC_DT.Value
isReOrder = True
End If
If Not (isReOrder) Then
MsgBox ("Saved")
Log tempstring1, tempstring2, tempstring3, tempstring4, tempstring5, , , False
End If
blnGood = False
Command36_OpenError:
Debug.Print "Update failed. Quitting. Error " & Err.Number & Err.Description
End Sub
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim strMsg As String
If Not blnGood Then
Cancel = True
strMsg = "Please use the Save button to save your changes," & _
vbNewLine & "or Escape to reset them."
Call MsgBox(Prompt:=strMsg, Title:="Before Update")
End If
End Sub