错误3027,数据库或对象是只读的?

时间:2013-06-06 18:23:03

标签: vba ms-access

当我运行代码时,它会停止并给我一个错误

 3027
Database or Object is Read only

当我点击调试时,它指向rec.edit。

但我不知道它是如何只读的。我检查确保对象已关闭,同样的错误仍然出现。提出它的人说它对他们有用,并且他们没有任何与readonly有关的问题。有什么想法吗?

 Public Function HitTest()

    Dim db As Database
    Dim rec As DAO.Recordset
    Dim fld As DAO.Field

    Set db = CurrentDb
    Set rec = db.OpenRecordset("PlayerSal")
    EditTable = "PlayerSal"

    For Each fld In rec.Fields
      If fld.Name <> "Name" And fld.Name <> "Salary" And Left(fld.Name, 4) <> "Per_" Then
        strFieldName = "Per_" & fld.Name & ""
        'rs.Fields (strFieldName)
        'X = "IIf(rec([" & fld.Name & "]) <> 0, Format((rec([Salary]) / rec([" & fld.Name & "])), '$#,###.##'), 0)"
        If FieldExists(EditTable, strFieldName) Then
        Else
            'AltTable = "ALTER TABLE " & EditTable & " ADD COLUMN " & strFieldName & " Double;"
            'CurrentDb.Execute (AltTable)
        End If
            rec.Edit
            X = IIf(rec((fld.Name)) <> 0, Format((rec("Salary") / rec((fld.Name))), "$#,###.##"), 0)
            rec.Fields(strFieldName).Value = X
            rec.Update
      End If
    Next fld

    End Function

因为我知道Access有时候真的很傻,所以我决定尝试一个新的数据库,然后导入我需要的几个文件。我有时候随意做这件事会让事情因某种原因而起作用。当我导入下面看到的模块时,它会在

处停止
 If FeildsExists(EditTable, strFieldName) 

它说Sub或Function没有定义......我不知道这两者中的任何一个是否与简单的东西有关......但是这变得很愚蠢......特别是当把这个放在一起的人有它工作时细

1 个答案:

答案 0 :(得分:1)

我知道下半场。 :o)您的函数名称错误。你有“如果FeildsExists”,它应该是“If FieldExists”。