Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-05-2007
Slash Slash is offline
Miembro
 
Registrado: abr 2004
Posts: 36
Poder: 0
Slash Va por buen camino
Falla en los Insert de ADO

Hola,
Les escribo para solicitar su ayuda, mi problema es el siguiente.
He desarrollado un equipo de biometria del cual leo las huellas que el mismo contiene. A medida que va llegando la informacion (huellas) las voy guardando en una DB Acces. A la misma accedo via ADO. Para hacer esto utilizo directamente el ActiveX provisto por Microsoft. El inconveniente surge a la hora de insertar el registro de las huellas en la tabla correspondiente. Abro el Recordset hago un AddNew le paso los datos de los campos, ejecuto un Update y por último cierro el Recordset. Grabo bien toda la data excepto el último registro el cual no genera error pero aveces se graba y aveces no. Es decir el Recordset no me devuelve ningun error al grabar este último registro pero, sin embargo, el registro no es agregado a la tabla.
Este es el codigo (utilizo VB6 y ADO 2.8):

Cita:
recHabilitados.Open "T_HuellasIN1_Temp", ActiveConn, adOpenForwardOnly, adLockOptimistic, adCmdTable
With recHabilitados
For Each Huella In Huellas
recHabilitados.AddNew
!hinID = mvarID
!hinPIN = mvarPIN
!hinIdentificacion = mvarIdentificacion
!hinSecurityLevel = mvarIdentificacion
!hinDedo = Huella.Dedo
!hinTemplate = Huella.Template
recHabilitados.AddNew
Next
End With
recHabilitados.Close
Set recHabilitados = Nothing
Muchas Gracias, cualquier ayuda me sera de utilidad.

Última edición por Slash fecha: 18-05-2007 a las 22:55:28.
Responder Con Cita
  #2  
Antiguo 19-05-2007
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Visual basic? Huacala.

Pero bueno, solo conozco Vba, que es parecido, y noto que no estas haciendo el Post

Veo en tu código que no haces el post de manera explicita, no será por eso que el último registro no se graba?,
los anteriores si son grabados por que al invocar AddNew, se hace un post ímplicito de la edición (si existe) previa.

Suerte
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #3  
Antiguo 21-05-2007
Slash Slash is offline
Miembro
 
Registrado: abr 2004
Posts: 36
Poder: 0
Slash Va por buen camino
Unhappy

Muchas Gracias por la respuesta y si... Vb Huacala debería ser el nombre de alguna version jajajaja.
Revise lo del post implicito y si bien es cierto, el Update que hago luego de pasar los campos debería hacer este trabajo. Lo que me parece mas raro es que si bien la falla es aleatoria cuando sucede no se me informa de ningun error. Lo he debugeado varias veces y el Update lo hace bien (al menos esto parece) pero el registro no es agregado a la tabla y no se me informa de nada.
Si a alguien se le ocurre algo le agradecería que lo posteara por mas insignificante que parezca ya que comienzo a pensar que el error es tan tonto que no lo estoy viendo.


Nuevamente Muchas Gracias.
Responder Con Cita
  #4  
Antiguo 22-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
El problema es que tienes 2 AddNew, uno al principio del bucle y otro al final.

El primero funciona bien, el último AddNew hay que quitarlo, ya que en la ejecución del bucle se llamará 2 veces y creará registros en blanco.

El último registro no se graba por un pequeño detalle. Cuando estas insertando y se ejecuta un movimiento de registro (AddNew forzará un cambio de registro) El motor de bases de datos guardará automáticamente ese registro en curso. Sin embargo, cuando se está en el último registro de rehabilitados, no se puede avanzar de registro (eof es true), y entonces se omite ese guardado que ocurre entre movimientos de registros.

Dos soluciones:
- antes del "next" asociado al "for" llamar a Post. Esto hace que se ejecute por cada registro del bucle.

- Sabiendo que el post es automático cada vez que se mueve de registro, fuera del bucle colocar un Rehabilitado.Post, ya que sabemos que al salir del bucle, ese último registro está en Edición y no se ha guardado.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 22-05-2007
Slash Slash is offline
Miembro
 
Registrado: abr 2004
Posts: 36
Poder: 0
Slash Va por buen camino
Talking

Ante todo muchisimas gracias por la ayuda. Paso a contarles que paso y como lo solucione.
Primero que nada el segundo AddNew que aparece en realidad debería ser un Update (equivale a post), Gracias Lepe... Sin embargo el error persistía y lo que encontre fue que la conexion tenia una transaccion iniciada que nunca era cerrada lo cual hacía que algunos Update no se llevaran a cabo, ademas no se generaba error porque el recordset estaba haciendo bien su trabajo era la conexion la que no estaba mandando el Commit a la base.
Para solucionarlo, antes de empezar el ciclo inicie una transaccion y luego despues de terminada la carga realize un Commit.

Saludos a todos y otra vez Gracias.
Por cualquier prgunta no duden en mandarme mensajes.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
falla en división mamaro Firebird e Interbase 11 12-02-2007 17:48:44
Falla al Modificar por 2ª vez teletranx Providers 1 20-12-2005 20:04:45
Insert me cierra otro Insert motrildelphi Conexión con bases de datos 0 05-05-2005 12:20:27
Falla una Dll (UDF) teletranx Firebird e Interbase 1 21-12-2004 14:20:59
Que falla? Caljim Conexión con bases de datos 7 16-09-2004 08:39:05


La franja horaria es GMT +2. Ahora son las 14:32:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi