Delphi - ¿ Que Método usar para refrescar los Combobox ?

 
Vista:

¿ Que Método usar para refrescar los Combobox ?

Publicado por Carla (1 intervención) el 25/08/2008 17:48:53
¿ Que Método usar para refrescar los Combobox ?

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

Hola Foro:

Estoy Utilizando Delhi 6 y SQL Server 2005, para conectarme uso DBexpress.

El problema que tengo es que al abrir los formularios, los combobox están actualizados, pero si en alguna terminal agregan un registro (por ejemplo) a al tabla de "Provincias", este registro no se vé en los combobox de los formularios que están abiertos.
Por ahora deben cerrar y volver a abrir el formulario pero no es una solución muy elegante que digamos.

los combobox que uso son los "DBLookupCombobox" conectados a un
TDataSourse>>TClientDataSet>>TDatasetProvider>>TSQLQuery>>TSQLConection ...(uff!...)

Los puedo refrescar haciendo

Código Delphi [-]ClientDataSet.Active:=False;
ClientDataSet.Active:=True;
Pero el tema es ¿Cuando y cómo?.

1- No vale hacerlo en el evento "on Click", ya que genera un gran tráfico de red y los datos del combobox se modifican muy de vez en cuando.

2- Puede ser una variable que diga "Si Hay que refrescar" y Preguntar en el evento on Click por esa variable. mmmm... no sé.

3- Puede ser colocar en el formulario un Botón que diga "Refrescar"... (no me gusta, pero...)

4- Colocar un Timer que refresque cada tanto ( generaría un tráfico de red inútil ).

Lo ideal sería que los combobox se atualicen unicamente al ser modificada al tabla.

Desde ya muchas gracias por su atención.
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

RE:¿ Que Método usar para refrescar los Combobox ?

Publicado por juancho (193 intervenciones) el 25/08/2008 18:50:27
Hasta donde yo se eso es posible en firebird mediante eventos que pueden ser definidos en la base de datos sea un procedimiento, trigger etc. Pero en SQLServer no se si se pueda hacer, debes de ver una forma de ingeniartelas para lograr algo asi, pero en firebird se puede, debes de verificar si en SQLServer existe un mecanismo parecido suerte.
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

RE:¿ Que Método usar para refrescar los Combobox ?

Publicado por pacopaz (104 intervenciones) el 25/08/2008 20:05:56
Sucede mucho este tipo de circunstancias en un desarrollo mayor y no es un problema menor, en definitiva.
Normalmente es un emorme punto a considerar cuando haces un aplicación a 3 capas, pero es mucho más sencillo resolverlo ahí, si es que la segunda capa se encuentra en el servidor, ya que las respuestas son mucho más rápidas. En tu caso, puedes pensar en una solución que minimice el requerimiento, considerando que los registros que dependen de esta actualización de catálogo sólo serían sujetos de la misma cuando intentas actualizar o ingresar uno nuevo.
En ambos casos, cuando actualices o ingreses, lo que puedes hacer, cuando pidas estas acciones sería desactivar y activar el datasource ligado al dbcombobox. Es decir: Si el usuario va a ingresar un nuevo registro o actualizar uno que ya existe, al pedir dicha acción (cualquiera de ambas), en el código puedes desactivar y activar.
Esto por que, normalmente, cuando decides ingresar un registro o actualizar uno que ya se encuentra en la base de datos hay un compas de espera, en lo que limpias los campos y (en su caso) los llenas con datos ya existentes y puedes incluir en ese compas de espera la actualización del datasource.
Si aún así, la edición o ingreso pudieran tardar algún tiempo y requirieran de dicha actualización, podrías implementar un procedimiento secundario, con alguna combinación de teclas usando los métodos MouseDown o MouseUp del combo, que pudieras definir como un shift+botón derecho o algo así.

Espero que te sirva.

Saludos.
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

RE:¿ Que Método usar para refrescar los Combobox ?

Publicado por Delfino (1216 intervenciones) el 04/09/2008 12:05:59
Lo q suelo hacer yo es crear un popup menu para la lookup combo y alli el usuario puede refrescar, si no encuentra el valor en la lista lo hace por si acaso ya se ha insertado..
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