FoxPro/Visual FoxPro - 2 cosas que no logro hacer con SELECT SQL

 
Vista:

2 cosas que no logro hacer con SELECT SQL

Publicado por DanielVFP (37 intervenciones) el 13/11/2010 19:30:44
Hola a todos.
Hay 2 cosas que no logro hacer en el siguiente código, paso a explicarlo.-
Tengo un TextBox alfanumérico donde le pido al operador que ingrese el código del producto a buscar o alguna descripción luego con un IF ISDIGIT() establezco si ingreso un numero o una frase, luego paso a contar el resultado de la consulta para saber si hay coincidencias con el ingreso.-

Esta en Fox/win x comodidad(el programa está en VFP 9.0)
STORE "leche" TO condi
SELECT COUNT(*) FROM arti WHERE nombre = condi
RETURN

Paso a solicitar ayuda para lograr lo siguiente:
1 - Que "leche" lo filtre estando en cualquier lugar del campo y no únicamente al principio.-
"Lecha NIDO lata x 800 Grs." resultado = 1
"NIDO leche en lata x 800 Grs." resultado = 0
2 - Como debo hacer para que no me aparezca la vendita ventana que me indica la cantidad de coincidencias y ponerlo en una variable para:
Si es 0 "No existe"
Si es 1 mostrar el producto directamente en el form principal
Si es + de 1 mostrar el resultado en un Grid.-

Espero se entienda.-

Saludos.
Daniel
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
sin imagen de perfil

RE:2 cosas que no logro hacer con SELECT SQL

Publicado por victor perez (278 intervenciones) el 13/11/2010 20:13:51
Hola,

Al hacer el select debes usar "LIKE" para que te aparezca en el resultado todos los registros que contienen "LECHE" en alguna posicion.

Algo asi

Public _valor
STORE "leche" TO condi
SELECT COUNT(*) FROM arti WHERE NOMBRE LIKE "%&condi%" into cursor _Cantidad
_valor=_cantidad.cnt
Return

Asi ya tienes en _Valor la cantidad de articulos que cumplen la condicion y puedes hacer con ese valor lo que quieres.

O bien puedes ponerlo en tu form directamente sabiendo que el campo Cnt del Cursor tiene el valor que obtuviste.

Yo hice la prueba. Puse Set Talk Off y hice lo mismo que tu quieres y no me aparece la "ventanita" que dices.

Victor _ Panama
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:2 cosas que no logro hacer con SELECT SQL

Publicado por DanielVFP (37 intervenciones) el 14/11/2010 01:02:40
Hola Doc.
Gracia, todavía no lo probé pero descarto que es la solución.-
Espero que nunca encuentre tu correo porque me surgen tantas dudas.-

Saludos desde Argentina-Santa Fé - Arequito
Daniel
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:2 cosas que no logro hacer con SELECT SQL

Publicado por es_binario (757 intervenciones) el 14/11/2010 05:46:36
no entiendo bien lo que le dices al doc. Victor, pero ahi te va otra propuesta

Aqui lo que tienes que cambiar es valor por el valor de tu textbox, el textbox lo tienes que tener en la propiedad format con un "!", para que todo lo entrege como texto y olvidate del comando es digito (isdigit)

*// primero se supone que verificas que el valor ingresado sea
*// numerico o de tipo letra esto atravez de un textbox que solo
*// captura todo en caracteres esta seria la funcion

LOCAL valor
valor = "leche"

IF ALLTRIM(valor) = ALLTRIM(STR(VAL(valor)))
*// si llegamos aqui es por que es un numero y puede ser un codigo
*// aqui debe ir el codigo que buscaria si existe a travez ver si esta
*// registrado el codigo usado por el usuario

*// ----------
*// aqui es lo mismo que el else pero con codigo. bla bla...
ELSE
*// son caracteres entonces el usuario a decidio hacer una busqueda de tipo like
*// es decir por descripcion
valor = UPPER(valor)
SELECT * FROM articulos WHERE UPPER(descripcion) like "%"+valor+"%";
INTO CURSOR mis_articulos_encontrados
*// aqui vemos si es unicamente uno o si son mas de uno
LOCAL tantos as Integer && esto es muy importante

SELECT mis_articulos_encontrados
STORE RECCOUNT() TO tantos && asignamos el numero de registros a la variable
DO case
CASE tantos = 0
*// no se encontro nada
CASE tantos = 1
*// uno y se manda a la pantalla
CASE tantos > 1
*// mas de uno y se manda la grilla
ENDCASE
ENDIF
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:2 cosas que no logro hacer con SELECT SQL

Publicado por DanielVFP (37 intervenciones) el 14/11/2010 13:01:40
Hola
Si te referís a esto "Espero que nunca encuentre tu correo porque me surgen tantas dudas.-" era un chiste(joda) te imaginaras que hace 10 días que estoy con VFP y sin un amigo a quien consultarle las cosas se hace un poco tedioso, me refiero a las cosas mas pequeñas como el inconveniente que me surgió cuando activo el "form buscar" todo bien luego cuando regreso me da un mensaje como que no encuentra la tabla "datos", le pongo el path completo y nada, estas cosas se hacen difíciles de preguntar en un foro, digo tampoco voy a preguntar todo los problemas que me surjan, en definitiva tardare un poco mas pero estoy seguro que lo voy a lograr.-

En cuanto a tu manera de hacerlo me parece muy interesante lo voy a tratar de implementar a pesar de que hay algunas cositas que me cuestan interpretar, bueno solo logre leerlo 2 veces.-

Muchas gracias x la respuesta.-

Saludos a todos.
Daniel
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
sin imagen de perfil

RE:2 cosas que no logro hacer con SELECT SQL

Publicado por victor perez (278 intervenciones) el 16/11/2010 04:55:02
Hola,

La solucion que te di es una idea general. ES_BINARIO te lo pone mas elaborado.

Y si, eso de ISDIGIT pues evitalo poniendo un "!" que indica caracter mayuscula.

Al Abrir el cursor y contar los registros, pues es la forma como MYSQL trabaja para saber si una busqueda existe o no. Asi programo en MySQL y VFP para encontrar algun dato..

Hago la conexion
Busco la informacion
Cierro la conexion

La informacion se guarda en un cursor. Si Reccount()=0 significa que no hay coincidencias...

Yo creo que lo que te propone ES:_BINARIO resuelve tu problema pero pruebalo y disfruta analizando. Es Sencillo.

Si quieres mi correo es [email protected]

A la ORden...siempre estoy en MSN.

Victor,
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