Microsoft访问db错误编辑记录

时间:2012-06-12 15:01:29

标签: sql-server ms-access ms-access-2007

我有一个Access应用程序,它使用SQLServer 2008 R2作为数据库。

当我尝试更新单个记录时,我收到此错误:

  

“3179微软Jet数据库引擎因为你而停止了这个过程   而另一个用户正在尝试同时更改相同的数据   时间“

此错误仅附加在此特定记录(以及其他一些记录)上,并在每次尝试更新时附加。 应用程序(和db)作为单个用户运行,我没有一个同时运行的线程更新相同的记录

enter image description here

我在尝试的每台机器上都出现此错误,因此它与SQLServer无关。

修改
我试着在SQL Server中直接更新记录并没有问题,更新就可以了。

我发现问题是当我从Microsoft访问中更新四个文本字段(es.Note)之一时。

当我运行下面的脚本时,我只有特定记录(Cod_stabile = 6600015)的错误,而其他记录没有 问题。更新其他字段没关系,错误只有文本字段。

Dim rs as DAO.Recordset
Dim db As DAO.Database
Set db = CurrentDb

. . .

StrSql = "SELECT St_Stabili.* FROM St_Stabili WHERE (St_Stabili.Cod_Stabile='6600015') ;"
Set rs = db.OpenRecordset(StrSql)
rs.Edit
rs!Note = '-'
rs.update  <- error


. . .

StrSql = "SELECT St_Stabili.* FROM St_Stabili WHERE (St_Stabili.Cod_Stabile='6600016') ;"
Set rs = db.OpenRecordset(StrSql)
rs.Edit
rs!Note = '-'
rs.update  <- OK!

非常感谢

2 个答案:

答案 0 :(得分:0)

检查SQL Server中的表是否有任何基于您的更新更新记录的触发器。这似乎是MS Access,因为另一个用户已更新记录。如果您的SQL Server表特别在触发器中有TIMESTAMP,请小心。

答案 1 :(得分:0)

我解决了更改用于更新TEXT字段的方法:

Dim UpdCommand As ADODB.command
    Set UpdCommand = New ADODB.command
    With UpdCommand
        .ActiveConnection = CurrentProject.Connection
        .CommandType = adCmdText
        .CommandText = "UPDATE St_Stabili SET NoteStabile= ?" _
                                      & ",NoteGenerali = ?" _
                                      & ",NoteConteggio = ?" _
                                      & ",NoteAmministratori = ?" _
                & " WHERE St_Stabili.Cod_Stabile = ?;"

        .Parameters.Append .CreateParameter("NotaSt", adVarChar, adParamInput, 300, Me!NoteStabile_x)
        .Parameters.Append .CreateParameter("NotaGen", adVarChar, adParamInput, 300, Me!NoteGenerali_x)
        .Parameters.Append .CreateParameter("NotaCon", adVarChar, adParamInput, 300, Me!NoteConteggio_x)
        .Parameters.Append .CreateParameter("NotaAmm", adVarChar, adParamInput, 300, Me!NoteAmministratori_x)
        .Parameters.Append .CreateParameter("Cod_Stabile", adVarChar, adParamInput, 15, Me!Cod_Stabile_x)
    End With

UpdCommand.Execute