Realmente estoy publicando esto por desesperación después de buscar mucho por una respuesta y probar algunas cosas diferentes sin éxito.El acceso a veces salta al registro existente en Guardar nuevo registro - Access2k FE/SQL2005 BE
Tengo una base de datos de Access donde recientemente migré las tablas a SQL 2005, Access continúa funcionando para los usuarios como un front-end que proporciona formularios, informes y consultas.
Sin embargo, desde su traslado a la FE Acceso/SQL SER configuración, los usuarios han estado informando que veces, cuando están entrando en un nuevo disco, que encajen en un subformulario (guardar el registro) o haga clic en Guardar en el menú, salta a un registro existente. El nuevo registro se ha guardado, pero por algún motivo el acceso cambia a un registro diferente a medida que se actualiza. El usuario debe cerrar, buscar el registro guardado y continuar editándolo.
Escenario: un usuario entra en una cita y llena todos los detalles de cotización, cliente, fecha, etc, a continuación, hace clic en el line-artículos SUBFORM para añadir un producto (o hace clic en Guardar en el menú), y de repente el formulario de cotización (y el subformulario de línea de pedido) muestra los detalles de alguna cotización aleatoria. La cita aleatoria podría ser reciente, o de hace años, y no tiene nada en común con la cita que estaban ingresando.
Este comportamiento extraño solo ocurre al insertar un nuevo registro, nunca al editar un registro existente. Los usuarios me dicen que sucede 'con más frecuencia' cuando van a agregar una nueva (cita, cliente, lo que sea) después de abrir la base de datos.
He notado que solo está sucediendo en formularios que tienen subformularios, así que mi primer pensamiento es que tiene que ver con el envío de Access a través de los datos del subformulario antes de que se guarden los datos del formulario, causando una violación de PK. Pero esto no parece estar sucediendo: no hay errores en el servidor SQL, y el registro se guarda con éxito. Obligar a los usuarios a guardar el registro de formulario principal antes de agregar registros de subformulario (es decir, en una cotización, obligándoles a guardar la cotización antes de que puedan agregar líneas de pedido) no funcionó, solo causa el salto (a veces) en la operación de guardar.
No estoy ejecutando vba en el guardado o en el actual, he establecido puntos de interrupción en todos los controladores de eventos a medida que salta y no se está ejecutando vba. Algunas de las formas 'saltar' no tienen vba en la forma. Pero todos tienen subformularios. Sospecho que tiene que ver con el bloqueo de registros.
El servidor que ejecuta las tablas es SQL Server 2005, los usuarios utilizan una combinación de Access 2000 y 2003, principalmente XP SP3 con un par de cajas viejas de Win2k. Están utilizando la duplicación de Merge y un par de usuarios están ejecutando ediciones de SSEE2005 replicadas y suscribiéndose al servidor principal. La mayoría de los usuarios no se replican, simplemente se conectan directamente al servidor a través de conexiones de cliente nativas ODBC o SQL. Pero he verificado que esto le está sucediendo a todos los usuarios, generalmente una o dos veces al día, y me ha sucedido antes. Por lo tanto, no es un problema del usuario.
La peor parte de este comportamiento es que solo ocurre algunas veces y no he podido encontrar un escenario que siempre haga que ocurra.
Si alguien ha experimentado algo así antes, hágamelo saber cómo lo resuelve, o incluso las sugerencias serían bienvenidas.
Actualización: (1/10/09) Problema resuelto, gracias a David Fenton.Configurar el formulario al modo de Entrada de Datos (Form.DataEntry = true) antes de abrirlo para agregar registros, de hecho previene el salto. El cliente informa que no hubo ningún problema desde que cambié esto hace una semana.
¿Está utilizando claves primarias y una marca de tiempo conocido como rowversion en todas las mesas? Supongo que estás usando teclas principales ya que suenas bastante competente, pero tengo que preguntar. –
Sí, todas las tablas tienen PK e identidad. Traté de agregar TimeStamp en un par de tablas (el Cita y las líneas de pedido) y no hizo ninguna diferencia en este problema. –
(Tony, puede copiar su comentario en el portapapeles, eliminarlo y luego reemplazarlo con un nuevo comentario con sus correcciones) –