2013-08-24 63 views
1

我有2个表,并从他们我做一个查询称为“Query_Dates”。在那里,我创建了4个计算字段,用于比较前面提到的两个表的字段。 我想要做的是每次计算的字段都等于“差异”,从第二个表(ADHOC)获取值并将其放入第一个表(Master_Table)。总共有4个字段可以根据其他4个称为(CheckRR,CheckQual,CheckProd,CheckCap)的字段进行更改。无法更新。数据库或对象是只读错误3027

问题是,它给了我一个错误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 

回答

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 - 也是一件坏事。

相关问题