sql >> Base de Datos >  >> RDS >> Sqlserver

Edición de problemas de registro en Access/SQL (conflicto de escritura)

Posibles problemas:

1 ediciones simultáneas

Una razón podría ser que el registro en cuestión se haya abierto en un formulario que está editando. Si cambia el registro mediante programación durante su sesión de edición y luego intenta cerrar el formulario (y por lo tanto intenta guardar el registro), Access dice que otra persona ha cambiado el registro (por supuesto que es usted, pero Access no lo sabe). ).

Guarde el formulario antes de cambiar el registro mediante programación.
En el formulario:

'This saves the form's current record
Me.Dirty = False

'Now, make changes to the record programmatically

2 Falta la clave principal o la marca de tiempo

Asegúrese de que la tabla de SQL-Server tenga una clave principal y una columna de marca de tiempo.

La columna de marca de tiempo ayuda a Access a determinar si el registro se ha editado desde la última vez que se seleccionó. Access hace esto al inspeccionar todos los campos, si no hay una marca de tiempo disponible. Tal vez esto no funcione bien con entradas nulas si no hay una columna de marca de tiempo (ver Problema de 3 bits nulos ).

La marca de tiempo en realidad almacena un número de versión de fila y no una hora.

No olvide actualizar el enlace de la tabla en Access después de agregar una columna de marca de tiempo; de lo contrario, Access no la verá. (Nota:el Asistente para conversión de tamaño de Microsoft crea columnas de marca de tiempo al convertir tablas de Access en tablas de SQL-Server).

Problema de 3 bits nulos

Según @AlbertD.Kallal, esto podría ser un problema de bits nulos que se describe aquí:KB280730 (última instantánea en WayBackMachine, el artículo original fue eliminado). Si está utilizando campos de bits, establezca su valor predeterminado en 0 y reemplace cualquier NULL ingresado antes por 0 . Usualmente uso un BIT DEFAULT 0 NOT NULL para campos booleanos, ya que se acerca más a la idea de un booleano.

El artículo de KB dice que se use un *.adp en lugar de un *.mdb; sin embargo, Microsoft suspendió la compatibilidad con Access Data Projects (ADP) en Access 2013 .