FoxPro/Visual FoxPro - filtro de busqueda se duerme con dos terminales

 
Vista:

filtro de busqueda se duerme con dos terminales

Publicado por many (332 intervenciones) el 06/09/2012 06:56:29
Saludo a todos,amigos del foro

La verdad que me encuentro entre la espada y la pared, estoy terminando un sistema de facturacion en visual foxpro 9 y estoy un poco desecconado.

Durante estuve desarrollando en una pc todo estaba bien pero cuando instale tres pc para ver si el producto valia la pena tremenda solpresa. En el area de facturacion tengo un filtro por necesidad para la busqueda de los articuculos que el usuario desea facturar, pero cuando conecto dos terminales al servidor la busqueda se duerme y es imposible faturar. Ahora estoy pensando ver si hay una solucion de lo contrario abandonar esto e iniciar este proyecto en otro lenguaje.

tengo las tablas en una pc y los formularios,menu y reportes son ejecutados en las terminales.
la tabla de articulo tiene 5000 articulos.

la busqueda funciona asì:

en el evento gotfocus tengo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
thisform.grid2.Visible = .t.   (grid donde se muestra el resultado de la busqueda)
SELECT articulo                 (tabla con 5000 articulos)
SET ORDER TO descrip     (ordeno por  el campa que busco o y filtro)
thisform.grid2.Refresh        (resfresco grid)
 
en el keypres:
	SET FILTER TO ALLTRIM(articulo.descrip) = ALLTRIM(thisform.descrip.Value)
	thisform.Refresh
	GO TOP    (para que se vea el primer registro)
	thisform.grid2.refresh
 
en el losfocus:
IF LASTKEY()=24                 (si pulso la flecha de abajo entro al grid2)
	thisform.grid2.SetFocus
	RETURN
ELSE
	thisform.grid2.Visible = .F.
	thisform.codigo.Value = " "
	thisform.codigo.Refresh
	thisform.codigo.SetFocus
	SET FILTER TO
ENDIF


Aclaro que grid2 es donde se muestra el resultado de la busqueda filtrada.
Descrip es donde boy escribiedo lo que quiero buscar.

Si alguien tiene una solucion favor ayudarme es un proceso de facturacion como todo no hay nada raro si estoy no es posible tambien lo acepto y recomiendenme a donde emigrar, digo esto con mucha pena y sinceridad.

gracias a todos por tantas ayudas durante un largo tiempo.
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

My urgente

Publicado por Saul (728 intervenciones) el 06/09/2012 07:20:39
No uses SET FILTER TO
estos filtros usalos cuando tengas no mas de 200 registros, mejor usa SELECT (SQL)
Tu codigo quedaria asi.. Ahora si quieres algo mas sofisticado mandame tu correo a [email protected] y te mando una pantalla que uso directamente para eso.

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
thisform.grid2.Visible = .t. (grid donde se muestra el resultado de la busqueda)
 
SELECT articulo  As codigo,;
                 descrip As Nombre;
FROM TuTabla;
ORDER BYE descrip;
Into Cursor _Busqueda
 
thisform.grid2.Refresh (resfresco grid)
 
en el keypres:
 
SELECT articulo, descrip
 
txtBusca = ALLTRIM(Thisform.descrip.value)
 
SELECT articulo  As codigo,;
                 descrip As Nombre;
FROM TuTabla;
WHERE txtBusca LIKE '%descrip%';   &&para que te busque en cualquier lugar del descrip
ORDER BYE descrip;
Into Cursor _Busqueda
 
 
thisform.Refresh
GO TOP (para que se vea el primer registro)
thisform.grid2.refresh
 
en el losfocus:
IF LASTKEY()=24 (si pulso la flecha de abajo entro al grid2)
   thisform.grid2.SetFocus
   RETURN
ELSE
   thisform.grid2.Visible = .F.
   thisform.codigo.Value = " "
   thisform.codigo.Refresh
   thisform.codigo.SetFocus
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

My urgente

Publicado por many (332 intervenciones) el 06/09/2012 08:15:35
El mismo Many,

Sigo en buca de soluciones

ahora en el keypres

SEEK ALLTRIM(thisform.descrip.Value)

No lo he probado en la red pero este es un metodo rapido, solo que hay que tratar de que el articulo al que apunte mienstra se escribe aparezca el inicio de grid ya que siempres esta en el medio o debajo.

ya son las 2:10 de la magrugada y debo trabajar mañana pero sigo intentando y luego escribo.

gracias a todos.
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

My urgente

Publicado por alexcoinc (450 intervenciones) el 06/09/2012 14:15:50
Many

Te hablo profesionalmente.

Seguramente como dices, tienes alguna dificultad y eso es normal y por demas aceptable, pero lo que no me parece de tu actitud frente a tu proyecto y frente al visual foxpro es que le eches la culpa de tu desconocimiento al lenguaje.

Si tu idea es abandonar el proyecto pues ésta dificultad te da enojo, desesperación o angustia y decides cambiar de lenguaje de programación.....QUE PASARA CUANDO EN ESE NUEVO LENGUAJE SE TE PRESENTE UNA DIFICULTAD ????....buscaras otro lenguaje ?

Y asi, asi de lenguaje en lenguaje....sin terminar ningun proyecto....????

Piensalo.

Mucho Animo !
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

My urgente

Publicado por victor perez (278 intervenciones) el 07/09/2012 21:28:08
HOla,

Creo que el problema esta en que tienes demasiado codigo para hacer una busqueda simple del articulo.

Yo hago la busqueda simple----

En el evento LostFocus del campo donde debo colocar el codigo del articulo pongo

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
Sele BASE_DE_ARTICULOS
Set orde to tag codigo --ORDENADOS POR EL CODIGO
seek This.value --EL VALOR ENTRADO EN EL CODIGO DEL ARTICULO
 
  If Found()
 
     Thisform.pgfPeds.Page1.grid1._Art.txtArt.value=almCa.Ca_Nombre && coloca el nombre del producto en la columna del grid
 
THISFORM.pgfPeds.Page1.grid1._PUnit.txtPun.value=almCa.CA_PRECIO	  && igual que el anterior pero para el precio
 
    	Thisform.Calcula  && calcula el subtotal
 
    ENDIF
 
 
 
  ELSE
 
   If !empty(this.value)  && si no encuentra el codigo entonces abre una mascara con el listado de todos los codigos y alli puede hacer una nueva busqueda por descripcion.
 
 
      Thisform.pgfPeds.page1.mskService.visible=.t.
      THISFORM.PGFPEDS.PAGE1.MSKSERVICE.TXTBNOMBRE.SETFOCUS
   Endif
 
  ENDIF


Asi yo lo hago y funciona de maravillas..


Saludos
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