Foros del Web » Soporte técnico » Ofimática »

ACCESS - Conflicto de escritura

Estas en el tema de ACCESS - Conflicto de escritura en el foro de Ofimática en Foros del Web. Hola amigos! Tengo un conflicto de escritura. El error que me tira es : "Otro usuario modificó este registro después de que usted comenzó a ...
  #1 (permalink)  
Antiguo 18/06/2009, 03:54
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
ACCESS - Conflicto de escritura

Hola amigos!
Tengo un conflicto de escritura. El error que me tira es :
"Otro usuario modificó este registro después de que usted comenzó a modificarlo. Si lo guarda, sobreescribirá los cambios que hizo el otro usuario.
Si copia los cambiosal Portapapeles podrá ver los valores que introdujo el otro usuario, y después puede volver a pegar sus cambios si así lo decide.

Guardar Registro - Copiar al Portapapeles - No hacer nada"


Estas son las consultas que lanzo:
Código:
        ' Guardamos los datos en la tabla IncidenciasUsuariosApp
        query2 = "INSERT INTO IncidenciasUsuariosApp (id_incidencia, id_administrador, fecha, tarea) VALUES (" & Me.txtIncidencia.Value & "," & Me.lstAdministradores.Value & ",#" & fechaTraspaso & "#,'" & Me.txtTarea.Value & "');"
        CurrentDb.Execute (query2)
        ' Guardamos los datos en la tabla Incidencias
        query1 = "UPDATE Incidencias SET id_site=" & Me.lstSites.Value & ", id_categoria=" & Me.lstCategorias.Value & ", fecha_finalizacion=#" & fechaFinalizacion & "#, id_impacto=" & Me.lstImpactos.Value & ", id_prioridad=" & Me.lstPrioridades.Value & ", id_estado=" & Me.lstEstados.Value & " WHERE id_incidencia=" & Me.txtIncidencia.Value
        CurrentDb.Execute (query1)
Dichas tablas estan relacionadas por un campo id_incidencia y su relacion es :
- Exigir integridad referencial
- Actualizar en cascada los campos relacionados

Como puedo evitar dicho mensaje?

Gracias!!!!
  #2 (permalink)  
Antiguo 18/06/2009, 03:59
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: ACCESS - Conflicto de escritura

puede ser porque se ejecutan demasiado rápido, es decir sin tiempo entre el insert y el update?
  #3 (permalink)  
Antiguo 18/06/2009, 04:03
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: ACCESS - Conflicto de escritura

Se puede hacer que no me salga ningun mensaje? quizás con esto lo soluciono , porqué se que las consultas estan y funcionan bien.


Gracias
  #4 (permalink)  
Antiguo 18/06/2009, 04:04
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: ACCESS - Conflicto de escritura

perdón por tantos mensajes, pero el conficto de escritura me lo muestra cuando hago el DoCmd.Close
  #5 (permalink)  
Antiguo 18/06/2009, 04:05
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: ACCESS - Conflicto de escritura

Puede ser, para descartarlo, pon un par de segundos de espera entre una y otra:

copiate esta funcion en un modulo:

Public Function EsperaSecs(Segundos As Single)
Dim hora As Single
hora = Timer
Do While Timer - hora < Segundos
DoEvents
Loop
End Function

Y luego, la llamas entre un y otra

' Guardamos los datos en la tabla IncidenciasUsuariosApp
query2 = "INSERT INTO IncidenciasUsuariosApp (id_incidencia, id_administrador, fecha, tarea) VALUES (" & Me.txtIncidencia.Value & "," & Me.lstAdministradores.Value & ",#" & fechaTraspaso & "#,'" & Me.txtTarea.Value & "');"
CurrentDb.Execute (query2)

Call EsperaSecs(2)

' Guardamos los datos en la tabla Incidencias
query1 = "UPDATE Incidencias SET id_site=" & Me.lstSites.Value & ", id_categoria=" & Me.lstCategorias.Value & ", fecha_finalizacion=#" & fechaFinalizacion & "#, id_impacto=" & Me.lstImpactos.Value & ", id_prioridad=" & Me.lstPrioridades.Value & ", id_estado=" & Me.lstEstados.Value & " WHERE id_incidencia=" & Me.txtIncidencia.Value
CurrentDb.Execute (query1)

Un saludo
  #6 (permalink)  
Antiguo 18/06/2009, 04:39
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: ACCESS - Conflicto de escritura

me lo sigue mostrando :(((((
  #7 (permalink)  
Antiguo 18/06/2009, 04:56
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: ACCESS - Conflicto de escritura

Cita:
Iniciado por Laufwerk Ver Mensaje
perdón por tantos mensajes, pero el conficto de escritura me lo muestra cuando hago el DoCmd.Close
Si te lo muestra al cerrar, va a ser por el origen de registro del formulario. Cual es??

un saludo
  #8 (permalink)  
Antiguo 23/06/2009, 02:43
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: ACCESS - Conflicto de escritura

El origen del formulario es una consulta, y cada uno de los campos esta asociado a un campo de dicha consulta.
Me he dado cuenta que si cambio cualquier campo y le doy a cerrar (DoCmd.Close simplemente) me cambia el estado de ese campo, es decir, me lo guarda en la tabla.
Cómo puedo hacer para que no ocurra esto?
  #9 (permalink)  
Antiguo 23/06/2009, 02:59
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: ACCESS - Conflicto de escritura

Claro, eso ocurre cuando los controles tienen origen de control, es decir, se modifica automaticamente su contenido.

Si no quieres que se modifique, quita el origen de los controles.

un saludo
  #10 (permalink)  
Antiguo 23/06/2009, 03:02
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: ACCESS - Conflicto de escritura

Entonces como cargara los datos?
  #11 (permalink)  
Antiguo 23/06/2009, 03:11
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: ACCESS - Conflicto de escritura

Hay otras formas de hacerlo, como se hace en VB clasico, por ejemplo, con recordset. pero todo d epende de lo que necesites. Si quieres que se carguen los registros, como ahora, pero que no se puedean modificar, puedes establecerloa si en las propiedades del formulario. Por ejemplo. O bloqueando los controles.

un saludo
  #12 (permalink)  
Antiguo 23/06/2009, 03:17
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: ACCESS - Conflicto de escritura

pués vaya putada! porque es un formulario de edicion, lo cual implica que necesito cargar los datos y editarlos. Aparte de eso, es un formulario que me vincula dos tablas por lo que tengo que hacer UPDATE en una e INSERT en la otra.
Creo que tendré que acabar haciendo lo que dices, en el evento Form_Load cargar el recordset en una variable según los campos que me pase el otro form y cargarlos en los campos.

Gracias!!!
  #13 (permalink)  
Antiguo 24/06/2009, 01:17
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: ACCESS - Conflicto de escritura

Un ultimo intento, prueba forzando el grabado del registro que este en ese momento cargado en el form antes de ejecutar las sentencias:

DoCmd.RunCommand acCmdSaveRecord

' Guardamos los datos en la tabla IncidenciasUsuariosApp
query2 = "INSERT INTO IncidenciasUsuariosApp (id_incidencia, id_administrador, fecha, tarea) VALUES (" & Me.txtIncidencia.Value & "," & Me.lstAdministradores.Value & ",#" & fechaTraspaso & "#,'" & Me.txtTarea.Value & "');"
CurrentDb.Execute (query2)
' Guardamos los datos en la tabla Incidencias
query1 = "UPDATE Incidencias SET id_site=" & Me.lstSites.Value & ", id_categoria=" & Me.lstCategorias.Value & ", fecha_finalizacion=#" & fechaFinalizacion & "#, id_impacto=" & Me.lstImpactos.Value & ", id_prioridad=" & Me.lstPrioridades.Value & ", id_estado=" & Me.lstEstados.Value & " WHERE id_incidencia=" & Me.txtIncidencia.Value
CurrentDb.Execute (query1)

Un saludo
  #14 (permalink)  
Antiguo 25/06/2009, 01:39
 
Fecha de Ingreso: marzo-2007
Mensajes: 538
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: ACCESS - Conflicto de escritura

Buenas de nuevo!
Acabo de probar lo que me has puesto y me salta con el error :
"La acción o comando 'GuardarRegistro' no está disponible ahora"

Creo que no me queda otra solucion que pasarle el id de la incidencia y crear el recordSet una vez dentro, y luego asignarle los valores a los campos. Aunque me he encontrado con otro error, me dice que necesita tener el foco para poder asignarle el valor y he probado en .setFocus y tampoco puedo.


Que puedo hacer?

Gracias de antemano
  #15 (permalink)  
Antiguo 25/06/2009, 02:24
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: ACCESS - Conflicto de escritura

Ese error debe ser por que usas me.nombreControl.text???

Si es asi, usa mejor: me.NombreControl.value

Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:51.