Access - Salta Registros

 
Vista:

Salta Registros

Publicado por yanira (140 intervenciones) el 24/01/2007 15:22:03
Esta funcion toma los datos de una consulta y los agrega a una tabla, el problema es que aparentemente agrega todos los datos segun la variable Resultado y si lo depuro asi lo hace aparentemente.
Pero en realidad no los agrega todos y se salta algunos y no entiendo porque

Por ejemplo agrega de el registro 10,11,12,13,14

10,12,13,14

Si es un solo registro aparentemente corre el proceso pero en realidad no lo anexa a la tabla.

La verdad no entiendo como solucionarlo

Function InsertarVacantes() As Integer
'Ingresa los registros de la consulta de la tabla TNOVEDAD EXCEL a
'la tabla Vacantes
Dim DB As Database
Dim tabla As DAO.Recordset
Dim Consulta As QueryDef
Dim Agregar As QueryDef
Dim Texto As String
Dim Resultado As String 'Número de registros insertados
Dim Dias As Date, Dias2 As Date, FechaFin As Date, FechaInicio As Date, Actual As Date

Set DB = CurrentDb()
Texto = "SELECT * FROM [ImportaExcelVacante]"
Set Consulta = DB.CreateQueryDef("", Texto)
Set tabla = Consulta.OpenRecordset
Resultado = 0

If (tabla.BOF = True) Then
Resultado = 0
Else
With tabla
Do While Not .EOF
FechaFin = tabla!FechaFin
FechaInicio = tabla!FechaInicio
Dias = tabla!FechaFin - tabla!FechaInicio
Dias2 = tabla!FechaFin - Date
If Dias >= 15 Then
If Dias2 >= 15 Then
If FechaFin > Date Then
Texto = "PARAMETERS Act DateTime, FINICIA DateTime, FTERMINA DateTime; " & _
"INSERT INTO Vacantes (IDVacante,CodigoDANE,IDJornada, IDNivel, IDArea, Sede, FechaCreación, Observaciones, IDTipoVacante, Titular,TipoNovedad, Inicio, Fin, Usuario) " & _
"VALUES (" & ConsecutivoVacante() & ",'" & .Fields("DANE") & "'," & .Fields("IDJornada") & "," & .Fields("IDNivel") & ",'" & .Fields("IDArea") & "','" & .Fields("Sede") & "',[Act],'" & .Fields("OBS") & "'," & .Fields("TipoVacante") & "," & .Fields("NumDocumento") & "," & .Fields("Tipo") & ",[FINICIA],[FTERMINA],'" & .Fields("Usu") & "')"
Set Agregar = DB.CreateQueryDef("", Texto)
Agregar.Parameters![Act] = .Fields("Actual")
Agregar.Parameters![FINICIA] = .Fields("FechaInicio")
Agregar.Parameters![FTERMINA] = .Fields("FechaFin")
Agregar.Execute
Resultado = Resultado + 1
.MoveNext
Controla = 1

End If
If tabla.EOF Then
GoTo Sale
Else
If Controla = 1 Then
Controla = 0
GoTo Sale

Else
.MoveNext
End If
End If
Else
.MoveNext
End If
Else
.MoveNext
End If
Sale:
Loop
End With

End If
InsertarVacantes = Resultado
End Function
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Función para insertar registros en una tabla desde una consulta

Publicado por Alejandro (4142 intervenciones) el 01/08/2023 22:55:42
El código proporcionado parece ser una función en Microsoft Access que tiene la finalidad de tomar los datos de una consulta llamada "ImportaExcelVacante" y agregarlos a una tabla llamada "Vacantes". Sin embargo, el problema es que algunos registros no se están agregando correctamente y parece que algunos registros se omiten al realizar la inserción.

Para solucionar este problema, se recomienda revisar los siguientes puntos:

1. Verificar la consulta "ImportaExcelVacante":
- Asegúrate de que la consulta "ImportaExcelVacante" esté correctamente definida y que esté obteniendo los datos esperados. Es posible que los registros que parecen omitirse no estén presentes en esta consulta o no cumplan las condiciones requeridas.

2. Revisar las condiciones de inserción:
- Verifica las condiciones dentro del bucle Do While en el código, especialmente las que involucran las fechas (FechaFin, FechaInicio, Dias y Dias2). Asegúrate de que las condiciones sean las adecuadas para determinar si un registro debe ser insertado en la tabla "Vacantes".

3. Revisar las claves primarias:
- Asegúrate de que la tabla "Vacantes" tenga una clave primaria definida correctamente. Si no se está cumpliendo con alguna condición de clave primaria, esto podría causar que algunos registros no se agreguen.

4. Utilizar una transacción:
- Podrías considerar utilizar una transacción para asegurarte de que todas las operaciones de inserción se realicen correctamente. Esto evitará que solo algunos registros se agreguen en caso de algún error.

5. Mostrar mensajes de depuración:
- Agrega mensajes de depuración (por ejemplo, MsgBox) en puntos clave del código para mostrar información relevante y facilitar la identificación de posibles problemas.

Recuerda que el código proporcionado podría depender de las estructuras y relaciones de la base de datos específica en la que se está utilizando, por lo que es importante revisar detenidamente las condiciones y asegurarse de que los datos sean consistentes con lo esperado.

¡Buena suerte con tu proyecto en Access!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar