PDA

Ver la Versión Completa : Refresco de un dbgrid


Ivan_25
22-11-2005, 10:14:12
Hola a tod@s!!!. El problema es que que tengo un dbgrid donde muestro datos de una base de datos access (conexion ado), y si le doy a un boton para insertar o borrar un registro me lo hace bien, pero tengo que cerrar y volver a abrir el formulario para poder ver los cambios. El codigo que tengo es este:

String cadena;
String codigoproceso;
ADOQActualizar->SQL->Clear();
cadena = "UPDATE descripcionprocesos SET Activo = true WHERE id = ";
codigoproceso = ADOQHistoricos->FieldByName("id")->AsString;
cadena = cadena + codigoproceso;
ADOQActualizar->SQL->Add(cadena);
ADOQActualizar->ExecSQL();
ADOQHistoricos->Close();
ADOQHistoricos->Open();

ADOQActualizar me actualizar los registros, y ADOQHistoricos me los muestra en el grid. ¿Cual puede ser el problema?.

Neftali [Germán.Estévez]
22-11-2005, 11:24:07
¿Has probado con la propiedad Refresh del DataSet asociado al DBGrid (Tabla o consulta)?

alt126
22-11-2005, 11:48:54
prueba como te han dicho a hacer un refresh, o tambien a volver a hacer la consulta que muestras en el dbgrid, o incluso a cambiar el datasource y volver a ponerlo.

Normalmente, tarda un tiempo en refrescar los cambios, y mas si es una BD en red.

Ivan_25
23-11-2005, 11:09:38
Si he probado a hacer el refresh, pero me sigue pasando igual. Tengo que cerrar el formulario y volverlo a abrir, o introducir o borrar otro registro para que me muestre los cambios anteriores.

Neftali [Germán.Estévez]
23-11-2005, 11:40:08
Si he probado a hacer el refresh, pero me sigue pasando igual...
Sólo para probar; Espera más de cinco o seis segundos para hacer el Refresh... a ver si así aparece.
Recuerdo (aunque tengo el tema un poco disperso) que había un tema en las Bases de Datos con access relacionado con el tiempo de los refrescos; Una propiedad que por defecto estaba en 5 segundos.
Haz la prueba y así lo descartamos; Y si es eso, intentaré buscar a ver de qué propiedad se trataba... estaba relacionada con temas de transacciones... Lo siento no poder ser algo más concreto, pero como ya te he dicho no lo recuerdo;

Si el tema se resuelve esperando 5 o 10 segundo y haciendo el Refresh, es eso seguro... e intentamos buscar por ahí para solventarlo.

Ivan_25
28-11-2005, 09:14:37
Ya esta arreglado. Lo he solucionado tal y como tu dices. He hecho un sleep(5000) y ya funciona. Gracias ;)

alt126
29-11-2005, 11:25:53
el problema de eso, es que generas un retardo artificial...es decir, estas haciendo que la aplicacion se enlentezca, mas de lo que deberia....no se si habra otra forma, perooooooooooo....no se yo si eso es lo mejor...siempre se intenta que se hagan las cosas lo mas rapidamente posible!!!

Neftali [Germán.Estévez]
29-11-2005, 11:46:18
Bueno, lo que te comenté era sólo una sugerencia para ver si ese era el problema; Sabiendolo seguro, es cuestión de buscar esa propiedad y "bajarle" el valor; Creo que por defecto está a 5000 (milisegundos);
Busca en MSN sobre transacciones y Extended Properties; Creo recordar que el nombre era algo así como "Bulk Transaction TimeOut" (¿?¿?¿?)
Tal vez en las configuraciones del Access también puedas encontrar algo.

Coincido en lo que te han dicho; El tema del Sleep no creo que sea buena solución.