elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Retraso con el metodo AddNew y mala recuperacion de datos. Porque?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Retraso con el metodo AddNew y mala recuperacion de datos. Porque?  (Leído 2,074 veces)
NemeSys

Desconectado Desconectado

Mensajes: 126


Ver Perfil
Retraso con el metodo AddNew y mala recuperacion de datos. Porque?
« en: 14 Noviembre 2006, 10:04 am »

Hola a todos,

estoy desarrollando un programa en VB que utiliza una BD en Access linkada con el motor jet 4.0.

Los accesos los hago a través de Recordset abiertos con la instruccion SQL que toca.

Pero si cuando uso el metodo Addnew, y despues del update,
recupero los datos de toda la tabla o parte de ella, los datos recien añadidos no se me recuperan, con lo que no puedo refrescar los controles que deberian refrescarse con los datos nuevos.

Para paliar esto estoy usando, como chapuza, la funcion API sleep, pero a medida que la tabla crece esta solucion deja de ser efectiva a menos que no ponga un sleep bastante grande. Cosa que hace que los updateos a la BD sean bastante mas lentos de lo que deberian.

Cuando debugo esto casi no sucede, pero si ejecuto, si. Supongo que es porque a la base de datos no le da tiempo a updatearse antes de ejecutar la select que viene a continuacion al updateo.

En resumen:

VB -> addnew -> BD (dato nuevo)
VB -> query -> BD (datos viejos)

Tal vez, seria mejor hacer un insert a pelo con SQL, al hacer open en el recordset?

Saludos y Gracias.


En línea

Ironhorse

Desconectado Desconectado

Mensajes: 150



Ver Perfil
Re: Retraso con el metodo AddNew y mala recuperacion de datos. Porque?
« Respuesta #1 en: 14 Noviembre 2006, 19:45 pm »

Proba usando la misma conexión (sin cerrarla y volverla a abrir) para actualizar y recuperar despues los datos.

Saludos


En línea

Pégense una vuelta por Cracton :)
CeLaYa


Desconectado Desconectado

Mensajes: 543



Ver Perfil
Re: Retraso con el metodo AddNew y mala recuperacion de datos. Porque?
« Respuesta #2 en: 14 Noviembre 2006, 22:22 pm »

recuerda que cuando usas una tabla estas trabajando sobre los datos que se cargaron en memoria, lo que tienes que hacer es actualizar la tabla antes de poder sacarle datos, es decir despues del Addnew, el registro nuevo se agrego en la tabla que esta cargada en memora aplica un Update para que grabe el registro fisicamente y luego ya podras hacerle lo que quieras

dim tb as recordset

' Agregas el registro
tb.AddNew
tb!Campo1 = X
tb!Campo2 = y
'Actualizas la tabla
tb.Update


yo lo he usado asi y funciona muy bien

la otra manera de agregar registros es haciendolo por medio de la consulta SQL "INSERT INTO"

dim Db as Database

Db.Execute "INSERT INTO Tabla " & _
                       "(campo1, Campo2) VALUES " & _
                       "('" & Valor1 & "', '" & Valor2 & "');", dbFailOnError
If Err Then fError Err.Number, Err.Description

En línea

"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.
NemeSys

Desconectado Desconectado

Mensajes: 126


Ver Perfil
Re: Retraso con el metodo AddNew y mala recuperacion de datos. Porque?
« Respuesta #3 en: 14 Noviembre 2006, 23:00 pm »

Gracias por las respuestas,

Ironhorse,

El problema es que la conexión a la BD no la cierro hasta el final del proceso.

En cambio el Recordset debo cerrarlo porque primero ejecuto una instrucción add, y luego debo cerrarla para poder refrescar el Recordset con un open cuyo source es una instrucción SQL.

Si despues de hacer update reabro el recordset con una SQL me da error 3005. Accion no permitida si el objeto esta abierto.

CeLaYa,

el algoritmo que propones, ya lo utilizo, invoco el addnew, inserto los campos e invoco el update.

Luego lo reabro con el Open haciendo un Select * from tabla; y es entonces cuando recupera los registros de la tabla excepto el ultimo insertado.

La BD tiene pocos registros y ya me pasa esto, pensaba al principio que pudiese ser problema de performance debido al tamaño, pero el caso es que en BD's de menos de diez registros por tabla ya me pasa.

Auque lo que propones del insert, lo prové en un programa anterior (de hace mucho tiempo y creo que este problema no lo tuve). Gracias por recordarmelo :)

Provaré con el insert SQL a pelo a ver que pasa.

Saludos
En línea

Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: Retraso con el metodo AddNew y mala recuperacion de datos. Porque?
« Respuesta #4 en: 15 Noviembre 2006, 22:33 pm »

esto me ocurrió ayer xD

aplicaba un filtro  luego añadia y no me refrescaba los datos,
lo tienes que hacer manual

Código:
'despues del update
rs.refresh    'si has usado la propiedad/método filter para el filtro éste se resetea
'si el filtro es una consulta no hay problemas, tu nuevo registro se encontrará correcto
En línea

ranslsad


Desconectado Desconectado

Mensajes: 492


Dim Ranslsad as String * :P - Que Vicio!


Ver Perfil WWW
Re: Retraso con el metodo AddNew y mala recuperacion de datos. Porque?
« Respuesta #5 en: 21 Noviembre 2006, 00:33 am »

Hola, me q equivocado, porfavor borren el post...

Salu2

Ranslsad
« Última modificación: 21 Noviembre 2006, 00:39 am por ranslsad » En línea

Ironhorse

Desconectado Desconectado

Mensajes: 150



Ver Perfil
Re: Retraso con el metodo AddNew y mala recuperacion de datos. Porque?
« Respuesta #6 en: 21 Noviembre 2006, 21:15 pm »

Citar
Si despues de hacer update reabro el recordset con una SQL me da error 3005. Accion no permitida si el objeto esta abierto.


si queres hacer otra consulta con el mismo recordset tenes que cerrarlo primero:

Código:
rs.close
En línea

Pégense una vuelta por Cracton :)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PORQUE NO INSERTA DATOS PHP « 1 2 »
PHP
lokito1986 11 5,286 Último mensaje 14 Abril 2012, 00:04 am
por lokito1986
Problema con retraso del teclado.
GNU/Linux
The Swash 5 3,266 Último mensaje 16 Octubre 2012, 03:41 am
por The Swash
¿mejor metodo recuperacion datos disco duro?AYUDA
Hardware
elpesta 0 1,600 Último mensaje 28 Octubre 2013, 20:59 pm
por elpesta
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines