jueves, 6 de junio de 2019

Busqueda Incrementada en Visual Foxpro

Busqueda incrementada

   Son muchas las opciones las cuales nos permiten buscar un producto dentro de una base de datos. Hoy les presentaré una forma sencilla de buscar dentro de una tabla y obtener el resultado el cual buscamos sin importar el orden por cual vamos a buscar.

   Mediante este procedimiento el programa podrá buscar mediante código o por nombre del producto, el sistema sencillamente compara si los valores son números o caracteres.

   Si lo que deseas buscar es mediante el campo código el sistema te irá mostrando los posibles campos el cual estas buscando. De igual forma sucede una vez que busques por el campo nombre.
 

Paso 1: 

Coloca en el evento Init el siguiente código:

SET SAFETY OFF
thisform.text1.BackColor =RGB(0,0,0)
thisform.text1.ForeColor =RGB(0,255,0)
thisform.list1.ItemBackColor =RGB(0,0,0)
thisform.list1.ItemForeColor =RGB(0,255,0)

CREATE TABLE productos (codigo c(6), nombre C(28),cantidad n(5),precio n(8,2))
INSERT INTO productos(codigo,nombre,cantidad,precio) VALUES ("000001","Tornillo 3/4",500,500)
INSERT INTO productos(codigo,nombre,cantidad,precio) VALUES ("000002","Tornillo 1/2",700,800)
INSERT INTO productos(codigo,nombre,cantidad,precio) VALUES ("000003","Tornillo 1 pulg.",300,1100)
INSERT INTO productos(codigo,nombre,cantidad,precio) VALUES ("000004","Tuerca 3/4",100,250)
INSERT INTO productos(codigo,nombre,cantidad,precio) VALUES ("000005","Tuerca 1/2",500,500)
INSERT INTO productos(codigo,nombre,cantidad,precio) VALUES ("000006","Arandela 3/4",500,200)
INSERT INTO productos(codigo,nombre,cantidad,precio) VALUES ("000007","Arandela 1/2",500,500)
INSERT INTO productos(codigo,nombre,cantidad,precio) VALUES ("000008","Bateria X ",20,1500)
INSERT INTO productos(codigo,nombre,cantidad,precio) VALUES ("000009","Bateria Y",50,1600)
INSERT INTO productos(codigo,nombre,cantidad,precio) VALUES ("000010","Bombillo 1 contacto",500,500)
INSERT INTO productos(codigo,nombre,cantidad,precio) VALUES ("000011","Bombillo 2 contacto",500,500)
INSERT INTO productos(codigo,nombre,cantidad,precio) VALUES ("000012","Luces de Neon",500,500)
INSERT INTO productos(codigo,nombre,cantidad,precio) VALUES ("000013","Bomba de Gasolina Tipo 1",500,500)
INSERT INTO productos(codigo,nombre,cantidad,precio) VALUES ("000014","Bomba de Gasolina Tipo 2",500,500)
INSERT INTO productos(codigo,nombre,cantidad,precio) VALUES ("000015","Bomba de Gasolina Tipo 3",500,500)
INDEX on nombre TAG nombre OF productos
SELECT * FROM productos INTO TABLE "vista" ORDER BY codigo desce 
thisform.list1.RowSourceType = 6
thisform.list1.RowSource ="vista.codigo,nombre,cantidad,precio"
thisform.list1.Requery 

thisform.list1.SelectedID(1)=.t.

Paso 2:

En el Evento interactivchange del Text1 agrega lo siguiente:

SELECT "vista"
GO top
xlen=LEN(ALLTRIM(thisform.text1.Value))
LOCATE FOR SUBSTR(TRIM(nombre),1,xlen)=SUBSTR(TRIM(thisform.text1.Value),1,xlen)
IF ISDIGIT(thisform.text1.Value)=.t. 
   SELECT * FROM productos INTO TABLE "vista"  WHERE UPPER(SUBSTR(codigo,1,xlen))=UPPER(SUBSTR(thisform.text1.Value,1,xlen)) ORDER BY codigo desce 
ELSE
   SELECT * FROM productos INTO TABLE "vista"  WHERE UPPER(SUBSTR(nombre,1,xlen))=UPPER(SUBSTR(thisform.text1.Value,1,xlen)) ORDER BY codigo desce 
endif

thisform.list1.Requery 

Paso 3:

Agrega el Control Command a tu formulario y en el evento Click coloca thisform.release()

Para tu mayor comodidad te estaré dejan el link de descarga en la parte inferior del Blog.



1 comentarios: