Ayuda textbox y Consulta SQL

21/04/2004 - 09:25 por Manuel | Informe spam
Hola a todos.
Tengo una duda. Si hago un formulario con varios textbox, cuando el
usuario opere con la aplicación se encontrará que si escribe en el
textbox cuando este alcanza su final automaticamente pasa al siguiente
y así sucesivamente.
¿Hay alguna forma de evitar esto cambiando alguna propiedad? o hay
que realizar una comprobación mediante programación.

Por otra parte estoy realizando una consulta SQL a una base de datos
y me resulta un poco lenta. La consulta la tengo en el
interactivechange de un Combobox y es la siguiente:

CmbBusqueda --> donde escribo el texto a buscar.
CmbCampos --> Contiene el indice para un array con los nombres de
los campos por los cuales buscar.

* Ha elegido coincidente
SentenciaSQL='SELECT * From Atelefonos NOCONSOLE NOWAIT INTO CURSOR
Ctelefonos WHERE '+Indices(Thisform.CmbCampos.ListIndex)+' Like
"%'+RTRIM(thisform.cmbBusqueda.DisplayValue)+'%"'

Thisform.grdAtelefonos.RecordSource=SentenciaSQL

¿Es posible optimizarla? ¿Estoy haciendo algo mal?

Gracias de antemano.

Preguntas similare

Leer las respuestas

#1 Ana María Bisbé York
22/04/2004 - 08:52 | Informe spam
Hola Manuel:

Es mejor hacer dos hilos para dos temas diferentes, corres el riesgo de que
quede algo por responder y es más difícil seguir el hilo de la respuesta.

Para la primera duda:

Tengo una duda. Si hago un formulario con varios textbox, cuando el
usuario opere con la aplicación se encontrará que si escribe en el
textbox cuando este alcanza su final automaticamente pasa al siguiente
y así sucesivamente.



Para eso utiliza el comando Set confirm que specifica si puede salir de un
cuadro de texto escribiendo más allá del último carácter del cuadro. Según
tu ejemplo sería
Set Confirm ON

Tu segunda pregunda está un poco difícil de entender. De inicio, yo
guardaría en una variable local el valor del value que tienes seleccionado
en el combo; pero no veo claro lo del array de los cmpos.

¿Quieres comentarlo un poco más?

Saludos,

Ana

"Manuel" escribió en el mensaje
news:
Hola a todos.
¿Hay alguna forma de evitar esto cambiando alguna propiedad? o hay
que realizar una comprobación mediante programación.

Por otra parte estoy realizando una consulta SQL a una base de datos
y me resulta un poco lenta. La consulta la tengo en el
interactivechange de un Combobox y es la siguiente:

CmbBusqueda --> donde escribo el texto a buscar.
CmbCampos --> Contiene el indice para un array con los nombres de
los campos por los cuales buscar.

* Ha elegido coincidente
SentenciaSQL='SELECT * From Atelefonos NOCONSOLE NOWAIT INTO CURSOR
Ctelefonos WHERE '+Indices(Thisform.CmbCampos.ListIndex)+' Like
"%'+RTRIM(thisform.cmbBusqueda.DisplayValue)+'%"'

Thisform.grdAtelefonos.RecordSource=SentenciaSQL

¿Es posible optimizarla? ¿Estoy haciendo algo mal?

Gracias de antemano.
Respuesta Responder a este mensaje
#2 Manuel
22/04/2004 - 09:20 | Informe spam
Si, gracias por tu respuesta a mi primera pregunta.

En cuanto a la consulta SQL. Primero decirte que la base de datos es
dbf. Tengo un combobox con la definición de todos los campos y en un
array los nombres de campos reales.
El array es Indices(n) y el combo es CmbCampos.
Por otra parte permito al usuario que introduzca datos en un combo
llamado CmbBusqueda (lo hago así en vez de con un textbox, porque cada
dato introducido pasa a formar parte del combo para mas adelante poder
repetir la busqueda a modo de historial).
Cuando se produce un evento interactivechange del CmbBusqueda realizo
la consulta SQL antes mencionada.

Por una parte ya tomo nota de introducir el value en un campo y la
busqueda me queda así:

vBusqueda=RTRIM(thisform.cmbBusqueda.DisplayValue)
vCampo=Indices(Thisform.CmbCampos.ListIndex)
SentenciaSQL='SELECT * From Atelefonos NOCONSOLE NOWAIT INTO CURSOR
Ctelefonos WHERE '+vCampo+' Like "%'+vBusqueda+'%"'
Thisform.grdAtelefonos.RecordSource=SentenciaSQL

En modo monousuario la aplicación va bien, pero cuando varios usuarios
se conectan y realizan busquedas simultaneamente estas van muy lentas.

¿Se puede hacer de otra forma (otras instrucciones,etc ...) para que
sea más rápida?
¿Puede estar el problema en los temporales donde se guardan los
cursores y quizas solucionarse poniendo carpetas temporales locales a
los usuarios?
¿El acceso SQL a dbfs es lento?

On Thu, 22 Apr 2004 08:52:35 +0200, "Ana María Bisbé York"
wrote:

Hola Manuel:

Es mejor hacer dos hilos para dos temas diferentes, corres el riesgo de que
quede algo por responder y es más difícil seguir el hilo de la respuesta.

Para la primera duda:

Tengo una duda. Si hago un formulario con varios textbox, cuando el
usuario opere con la aplicación se encontrará que si escribe en el
textbox cuando este alcanza su final automaticamente pasa al siguiente
y así sucesivamente.



Para eso utiliza el comando Set confirm que specifica si puede salir de un
cuadro de texto escribiendo más allá del último carácter del cuadro. Según
tu ejemplo sería
Set Confirm ON

Tu segunda pregunda está un poco difícil de entender. De inicio, yo
guardaría en una variable local el valor del value que tienes seleccionado
en el combo; pero no veo claro lo del array de los cmpos.

¿Quieres comentarlo un poco más?

Saludos,

Ana

"Manuel" escribió en el mensaje
news:
Hola a todos.
¿Hay alguna forma de evitar esto cambiando alguna propiedad? o hay
que realizar una comprobación mediante programación.

Por otra parte estoy realizando una consulta SQL a una base de datos
y me resulta un poco lenta. La consulta la tengo en el
interactivechange de un Combobox y es la siguiente:

CmbBusqueda --> donde escribo el texto a buscar.
CmbCampos --> Contiene el indice para un array con los nombres de
los campos por los cuales buscar.

* Ha elegido coincidente
SentenciaSQL='SELECT * From Atelefonos NOCONSOLE NOWAIT INTO CURSOR
Ctelefonos WHERE '+Indices(Thisform.CmbCampos.ListIndex)+' Like
"%'+RTRIM(thisform.cmbBusqueda.DisplayValue)+'%"'

Thisform.grdAtelefonos.RecordSource=SentenciaSQL

¿Es posible optimizarla? ¿Estoy haciendo algo mal?

Gracias de antemano.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida