Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/01/2012, 03:32
pumi
 
Fecha de Ingreso: marzo-2007
Mensajes: 127
Antigüedad: 17 años, 2 meses
Puntos: 2
No se insertan registros nuevos en una tabla ACCESS

Hola a todo el mundo.

Tengo una base de datos en la que hay tres tablas relacionadas entre si del siguiente modo (relaciones uno a muchos, aunque en la práctica sólo se relacionan uno a uno)

ANALISIS_CABECERAS-------->ANALISIS_LINEAS_DE_CABECERAS

ANALISIS_LINEAS_DE_CABECERAS-------->ANALISIS_SOLUCIONES_DE_LINEAS

Pues bien, tengo un formulario en el que inserto mediante sentencias SQL registros nuevos en las tres tablas. Para ello introduzco los datos en "ANALISIS_CABECERAS", depués obtengo el máximo valor del campo clave de esta tabla (es autonumérico) para poder insertarlo en el campo correspondiente de la tabla "ANALISIS_LINEAS_DE_CABECERAS" y que queden así relacionados los registros de ambas tablas. Inserto en esta tabla este valor y los demás correspondientes a dicha tabla. Hago la misma operación con la última tabla.

Lo que me ocurre es que los datos en las dos primeras tablas se introducen sin problemas, pero los datos en la tercera tabla hay ocasiones en los que si que se introducen y hay ocasiones en las que no. me da la sensación de que esto ocurre cuando hay varios usuarios atacando a las tablas en diferentes equipo al mismo tiempo. Es como si algún usuario estuviera bloqueando el acceso a la última tabla de continuo y no dejara a los demás introducir datos, pero no se me genera ningún mensaje de error ni nada.

El código que uso es el siguiente:

-----------------------------------------------------------------------------------

Dim dbsMiBaseDatos As DAO.Database
Dim rstMiReg As DAO.Recordset
Dim Miselect As String

Miselect = "INSERT INTO ANALISIS_CABECERAS (Tipo,CodProcedencia,CodTipoMedida,CodCriterioNIve l1_A,IdCriterioNIvel2_A,CodCriterioNIvel1_B,IdCrit erioNIvel2_B) "
Miselect = Miselect & "VALUES ('LISTA'," & ValorProcedencia & ",'" & Me!NuevoTipoMedida.Value & "'," & ValorCodNivel1_A & "," & ValorIdNivel2_A & "," & ValorCodNivel1_B & "," & ValorIdNivel2_B & ");"

DoCmd.RunSQL Miselect

Set dbsMiBaseDatos = CurrentDb 'Asignamos la base de datos actual a la variable dbsMiBaseDAtos

'Instrucciones para escoger el máximo valor de ANALISIS_CABECERAS.CodCabeceraAnalisis en el que Tipo sea "LISTA"
Miselect = "SELECT MAX (ANALISIS_CABECERAS.CodCabeceraAnalisis) AS Maximo FROM ANALISIS_CABECERAS WHERE ANALISIS_CABECERAS.Tipo ='LISTA'"

Set rstMiReg = dbsMiBaseDatos.OpenRecordset(Miselect, dbOpenDynaset)
rstMiReg.MoveFirst
With rstMiReg
MaxCabecera = !Maximo
End With

Set rstMiReg = Nothing

'Insertamos los valores correspondientes en la tabla ANALISIS_LINEAS DE CABECERAS
Miselect = "INSERT INTO ANALISIS_LINEAS_DE_CABECERAS (CodCabeceraAnalisis,CausaMejora) VALUES ("
Miselect = Miselect & MaxCabecera & ",'" & Me!NuevoCausaMejora.Value & "')"

DoCmd.RunSQL Miselect

'Instrucciones para escoger el máximo valor de ANALISIS_LINEAS_DE_CABECERAS.CodLineaAnalisis
Miselect = "SELECT MAX (ANALISIS_LINEAS_DE_CABECERAS.CodLineaAnalisis) AS Maximo FROM ANALISIS_LINEAS_DE_CABECERAS"

Set rstMiReg = dbsMiBaseDatos.OpenRecordset(Miselect, dbOpenDynaset)
rstMiReg.MoveFirst
With rstMiReg
MaxLinea = !Maximo
End With

Set rstMiReg = Nothing

ValorFechaInicialCadena = Month(Me!NuevoFechaInicio.Value) & "/" & Day(Me!NuevoFechaInicio.Value) & "/" & Year(Me!NuevoFechaInicio.Value)
'Insertamos los valores correspondientes en la tabla ANALISIS_SOLUCIONES_DE_LINEAS
Miselect = "INSERT INTO ANALISIS_SOLUCIONES_DE_LINEAS (CodLineaAnalisis,Solucion,FechaInicio,FechaLimite ,FechaFin,CodResponsable,CodEfectividad,EditadoPor ,CodDepartamento) VALUES ("
Miselect = Miselect & MaxLinea & ",'" & Me!NuevoSolucion.Value & "',#" & ValorFechaInicialCadena & "#,#" & ValorFechaLimiteCadena & "#,"

Me!NuevoFechaFin.SetFocus
If Me!NuevoFechaFin.Text = "" Then
Miselect = Miselect & "Null"
Else
Miselect = Miselect & "#" & ValorFechaFinCadena & "#"
End If

Miselect = Miselect & "," & ValorResponsable & "," & ValorEfectividad & "," & ValorEditadoPor & "," & ValorDepartamento & ")"

DoCmd.RunSQL Miselect


dbsMiBaseDatos.Close

Set dbsMiBaseDatos = Nothing


-----------------------------------------------------------------------------------


Por favor, ¿alguien sabe qué me puede estar pasando y qué solución se puede dar al asunto?

Muchas gracias y un saludo.