无法更新。数据库或对象是只读错误3027

时间:2013-08-24 15:07:59

标签: sql ms-access access-vba

我有两个表,我从中做了一个名为“Query_Dates”的查询。在那里,我创建了4个计算字段,用于比较前面提到的两个表的字段。 我想要做的是每次计算的字段等于“Diff”,从第二个表(ADHOC)获取值,并将其放在第一个表(Master_Table)中。总共有4个字段我将根据其他4个字段(CheckRR,CheckQual,CheckProd,CheckCap)进行更改。

问题是它给了我一个错误3027,对象是只读的,它显示为“rsd.edit”。有人可以帮我或给我任何反馈吗?提前谢谢。

下面,您可以找到代码。

enter code here
Private Sub Comando27_Click()

Dim rsd As DAO.Recordset

Dim supplierName As String

Set rsd = Application.CurrentDb.OpenRecordset("Query_Dates", dbOpenDynaset)

retry: supplierName = InputBox("Please enter the Supplier Name", _
"Information Required")

'MsgBox "Supplier requested: " & supplierName

valid = MsgBox("Supplier Requested = " & supplierName & "??", vbYesNoCancel, "Validation")

If valid = 7 Then

GoTo retry

ElseIf valid = 2 Then

GoTo salir

End If

rsd.MoveFirst

Do While Not rsd.EOF

If rsd![Supplier Name] = supplierName Then

If rsd![CheckRR] = "Diff" And rsd![ADHOC_Run at Rate Dt] <> Empty Then

rsd.Edit

rsd![Run at Rate Dt] = rsd![ADHOC_Run at Rate Dt]

rsd.Update

End If

If rsd![CheckQual] = "Diff" And rsd![ADHOC_Qual Verif Dt] <> Empty Then

rsd.Edit

rsd![Master_Table_Qual Verif Dt] = rsd![ADHOC_Qual Verif Dt]

rsd.Update

End If

If rsd![CheckProd] = "Diff" And rsd![ADHOC_Prod Verif Dt] <> Empty Then

rst.Edit

rsd![Master_Table_Prod Verif Dt] = rsd![ADHOC_Prod Verif Dt]

rsd.Update

End If

If rsd![CheckCap] = "Diff" And rsd![ADHOC_Prod Verif Dt] <> Empty Then

rsd.Edit

rsd![Master_Table_Cap Verif Dt] = rsd![ADHOC_Cap Verif Dt]

rsd.Update

End If

End If

rsd.MoveNext

Loop

salir: rsd.Close

Set rsd = Nothing

End Sub 

1 个答案:

答案 0 :(得分:2)

某些查询不可更新。在尝试编辑之前,请先检查Updatable property

if rsd.Updatable then

但是你可能有更大的问题。您的声明与您的使用不符。

Dim rsd As DAO.Recordset
...
If rsd![CheckProd] = "Diff" And rsd![ADHOC_Prod Verif Dt] <> Empty Then

rst.Edit

看到区别?声明为rsd,使用了rst.Edit。要么你已经在外部范围内宣布了第一个 - 一件坏事 - 或者你没有使用Option Explicit - 也是一件坏事。