Registro de edición de error de base de datos de acceso de Microsoft

Tengo una aplicación de Access que usa SQLServer 2008 R2 como base de datos.

Cuando trato de actualizar un solo registro, aparece este error:

"3179 el motor de base de datos Microsoft Jet detuvo el proceso porque usted y otro usuario están intentando cambiar los mismos datos al mismo tiempo"

Este error se agrega solo en este registro en particular (y algunos otros) y se agrega cada vez que intento actualizarlo. La aplicación (y la base de datos) se ejecuta como usuario único y Yo no tengo un subproceso que se ejecuta al mismo tiempo actualiza el mismo registro

enter image description here

Recibo este error en cada máquina que pruebo, por lo que no debería estar relacionado con SQLServer.

EDITAR
He intentado actualizar el registro directamente en SQL Server y no hay problema, la actualización está bien.

Descubrí que el problema es cuando actualizo uno de los cuatro campos de texto (es. Nota) desde el acceso de Microsoft.

Cuando ejecuto el script a continuación, tengo el error solo para un registro en particular (Cod_stabile = 6600015) con los demás registros sin problemas. Actualice para otros campos, está bien, el error solo existe con los campos de texto.

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!

Muchas gracias

preguntado el 12 de junio de 12 a las 16:06

Cuando dice que no tiene un subproceso en ejecución, ¿está seguro de que no está abriendo un conjunto de registros en código u otro formulario o subformulario? ¿Recibe un error cuando intenta actualizar este registro en la tabla vinculada? -

2 Respuestas

Verifique si su tabla en SQL Server tiene activadores que actualicen el registro en función de su actualización. Esto aparece en MS Access como otro usuario ha actualizado el registro. Tenga cuidado si su tabla de SQL Server tiene un TIMESTAMP, especialmente en un disparador.

Respondido el 15 de junio de 12 a las 11:06

Resolví cambiar el método utilizado para actualizar los campos de TEXTO:

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

Respondido el 18 de junio de 12 a las 06:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.