Programación General > Visual Basic 6.0 e inferiores

 Cancelar Búsqueda Sql

(1/1)

Jeremy:
Hola a tod@s, tengo un problemilla el cual espero puedan ayudarme a resolver. Desde mi programa hago una consulta SQL para que realice una búsqueda en una tabla, los resultados de esa búsqueda los voy volcando a un ListView, hay momentos en los que este proceso tarda demasiado, no es que sea un problema es debido a la cantidad de registros con la que debe trabajar. Quiero añadir un botón con el texto Cancelar, que lo que hace es parar esa búsqueda. Alguien podría decirme cómo hacerlo?. Trabajo con una BBDD ACCESS y con Microsoft ADO 2.5

Gracias por vuestra ayuda.

Un saludo, :hola:

eliza_marti:
Hola Jeremy!.. :hola: ..mmmm..no se si nos podrías poner un poco de tu code en la parte de la busqueda.... :) ...pero puedes crear un flag (variable bandera) en el botón de cancelar que pongas ...que se active cuando lo presiones... y validar dicha variable dentro del while que usas para barrer tu tabla...(o nose..lo que tengas en tu code..)...

Nos avisas cualquier cosita.. ;)  ...Espero haberte guiado un poquito..... :suerte:

desarrollo:
:hola:  hola eliza_marti  :hola: eres nueva por aki no te habia visto antes.... :P

a mi tambien me interesa como detener una busqueda con solo resionar un boton (en este caso puede ser ESC) podrias decirno de que manera declarar o en todo caso crear esa variable que dices (flag - bandera) <_<  

te lo agardesco mucho de antemano....

desarrollo   :comp:

Brroz:
Hola.

Eliza da en el clavo.

Declara una variable booleana y listo.

Al pulsar el botón la pones = TRUE.

Antes de iniciar el bucle para rellenar el grid la pones = FALSE.
En el medio del bucle pregunta por el valor de la variable, si es TRUE, sal del bucle. Eso sí: para que esto funcione es indispensable que en algun lugar del bucle coloques una instrucción DoEvents que permita que se procesen los eventos en cola (de otra forma tu aplicación no se enteraría de la pulsación del botón hasta que salieras del bucle).

Esquemáticamente:


--- Código: Text --- Private bCancel As Boolean Private Sub Command1_Click()   bCancel = TrueEnd Sub Private Sub Metodo()      bCancel = False    Do While condicion    .    .    .    DoEvents    If bCancel Then Exit Do    .     .    .   loop End Sub  
Debéis de tener en cuenta que introducir en el bucle la instrucción Doevents + una comparación implica penalizar el rendimiento, por lo que puede ser buena idea introducir un contador para realizar la comprobación cada X iteraciones del bucle.

Chao.

Navegación

[0] Índice de Mensajes

Ir a la versión completa