0

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

 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 未定义...我不知道这两个是否与简单的事情有关..但这越来越愚蠢了...尤其是当把它放在一起的人让它工作正常时。

4

1 回答 1

1

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

于 2013-06-07T20:22:17.983 回答