FoxPro/Visual FoxPro - Busqueda

 
Vista:

Busqueda

Publicado por Sergio (16 intervenciones) el 13/11/2013 21:54:34
Hola Chicos.
Tengo que buscar los articulos para facturar. La busqueda la hago con un combobox, o sea con la primer letra despliega y lo selecciono.
Quisiera saber si tienen un proceso para hacer la busqueda de una tabla productos desde un texto o combobos con mas letras, hasta 3 sería lo ideal se desplieguen los artíclos para seleccionar.

Lo hago en visual foxpro 8.

Gracias
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
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Busqueda

Publicado por Fidel José (558 intervenciones) el 14/11/2013 01:20:29
Lo primero que tienes que asumir es que un ComboBox para buscar productos en una tabla es una mala idea. Imagínate que tienes 30000 artículos, de los cuales 1500 comienzan con "A".

Lo apropiado es hacer un formulario tipo modal (WindowType=1) con un control grid, donde puedes agregar diversos métodos de búsqueda y puedes parametrizar para utilizarlo con cualquier tabla (Clientes, proveedores, Productos, Empleados, Fleteros, etc.)
Como necesitas definir un método de devolución, a mí me gusta uno como el que sigue:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
* Supuestos
* Tabla de busqueda: PRODUC
* Campos: Codprod (código producto) Descrip (descripción) Precio (precio)
**************************************************************************
 
* fORMULARIO MODAL WindowType=1, Name="FrmBuscar"
* 1 TExtBox (Text1)
* 1 Commandbutton Caption="Buscar" (Command1)
* 1 CommandGroup con 2 botones (Aceptar y Cancelar)
* 1 Control GRid (Grid1)
 
 
* FORM WindowType=1 FrmBuscar
* Evento LOAD
ADDPROPERTY(thisform,"RETORNA",NULL)
 
 
 
* FORM WindowType=1 FrmBuscar
* Evento Init
Thisform.grid1.RecordSource=""
 
 
* Command1 (buscar)
* Evento Click
lcBusca=(thisform.text1.Value)
IF EMPTY(lcBusca)
	RETURN
ENDIF
thisform.grid1.RecordSource=""  && desvinculamos el control Grid
 
SELECT * FROM produc WHERE descrip like [%]+lcbusca+[%] INTO CURSOR pepa readwrite
 
&& Alternativa: SELECT * FROM produc WHERE descrip like lcbusca+[%] INTO CURSOR pepa readwrite
&&              Esto trae similares coincidiendo con el inicio del nombre buscado.
 
&& Crear el cursor ReadWrite, te permite indexarlo para facilitar la presentación.
 
IF _tally=0  && se procesó algún registro?
	MESSAGEBOX("No hay similares")
	RETURN
ENDIF
thisform.grid1.RecordSource="pepa"
thisform.grid1.Refresh
SELECT pepa
thisform.grid1.SetFocus
*************************************
 
 
* CommandGroup.Buttons(1) (Aceptar)
* Evento Click
**********************************
* Se crea una matriz de 5 elementos en el objeto Empty. Tal vez se necesiten más
* Esto depende de lo que se necesite devolver al form convocante.
RELEASE objEmpty
objEmpty=CREATEOBJECT("EMPTY")
ADDPROPERTY(objEmpty,"gaMat[5]","")
WITH objEmpty
	.Gamat[1]=pepa.codprod
	.gamat[2]=pepa.descrip
	.gamat[3]=pepa.precioa
ENDWITH
thisform.retorna=ObjEmpty
thisform.Release
 
* CommandGroup.buttons(2) (Cancelar)
* Evento Click
************************************
Thisform.Release
 
* FORM WindowType=1
* Evento UNLOAD
IF USE("PEPA")
       SELECT PEPA
       USE
ENDIF
 
RETURN THISFORM.RETORNA
 
****************************************************
*
* Método de llamada al formulario modal de búsqueda
* En un botón
****************************************************
DO FORM ..\Forms\Frmbuscar TO objREturn
IF ISNULL(objReturn)
	MESSAGEBOX("No Seleccionó nada")
ELSE
	lcId=objREturn.gamat[1]
	lcName=objReturn.Gamat[2]
	lnPrecio=objREturn.gamat[3]
	MESSAGEBOX(lcId+" "+lcName+" "+LTRIM(STR(lnPrecio,12,2)))
ENDIF

Te queda toda la ingeniería de diseño y parametrización. Pero ese es un buen motor con alto grado de encapsulación.
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

Busqueda

Publicado por Sergio (16 intervenciones) el 27/11/2013 21:46:43
Hola. Muchas Gracias. Lo pruebo
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