在访问绑定表单中写入错误

时间:2014-12-29 19:03:45

标签: vba ms-access oracle11g ms-access-2013

全部,

我有一个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

0 个答案:

没有答案