set filter no filtra en el ejecutable
Publicado por Ana María Fernández (8 intervenciones) el 24/09/2011 16:12:08
Hola. Tengo un form que muestra en un grid el resultado del siguiente filter:
miva=LEN(ALLTRIM(mdescri))
DO case
CASE EMPTY(mdescri1).and.empty(mano)
SET FILTER TO upper(left(T0012.des_ART,miva))=UPPER(mdescri).and.atcc(ALLTRIM(UPPER(mmodel)),UPPER(T0012.mod_ART))>0) IN T0012
CASE NOT EMPTY(mdescri1).and.empty(mano)
SET FILTER TO upper(left(T0012.des_ART,miva))=UPPER(mdescri).and.upper(ALLTRIM(mdescri1))$UPPER(T0012.des_ART).and.atcc(ALLTRIM(UPPER(mmodel)),UPPER(T0012.mod_ART))>0) IN T0012
CASE EMPTY(mdescri1).and.not empty(mano)
SET FILTER TO upper(left(T0012.des_ART,miva))=UPPER(mdescri).and.upper(ALLTRIM(mano))$UPPER(T0012.mod_ART).and.atcc(ALLTRIM(UPPER(mmodel)),UPPER(T0012.mod_ART))>0) IN T0012
CASE NOT EMPTY(mdescri1).and.not empty(mano)
SET FILTER TO upper(left(T0012.des_ART,miva))=UPPER(mdescri).and.upper(ALLTRIM(mdescri1))$UPPER(T0012.des_ART).and.upper(ALLTRIM(mano))$UPPER(T0012.mod_ART).and.atcc(ALLTRIM(UPPER(mmodel)),UPPER(T0012.mod_ART))>0) IN T0012
ENDcase
THISFORM.REFRESH
Es complicadito pero funciona muy bien. Permite una búsqueda eficiente en una tabla (T0012) con más de 20.000 registros de repuestos de automóviles con su descripción y modelo. El resultado es mostrado en un grid desde el cual, presionando en el número de artículo, es posible seleccionar un registro en particular y ver otros datos. PERO.... todo es muy hermoso mientras no lo incluya en el ejecutable. Desde el .exe, no selecciona ningún registro. Y es el filter, no el grid, porque para salir de la duda le puse un brow a la salida del CASE y no muestra ningún registro.
Tengo un problema similar con otro form que busca en otra tabla, de casi 90.000 registros, muy bien siempre y cuando no lo corra desde el ejecutable.
Se me ocurren formas de reemplazar estos forms, pero no me gustan tanto visualmente, el usuario ya está acostumbrado a usarlos así y no puedo creer que haya algo que no funcione por el sólo hecho de incluirlo en un ejecutable. Por otro lado, tengo que hacer el ejecutable para que puedan trabajar desde varias máquinas a la vez de manera realmente interactiva.
Agradezco desde ya su ayuda.
Ana María
miva=LEN(ALLTRIM(mdescri))
DO case
CASE EMPTY(mdescri1).and.empty(mano)
SET FILTER TO upper(left(T0012.des_ART,miva))=UPPER(mdescri).and.atcc(ALLTRIM(UPPER(mmodel)),UPPER(T0012.mod_ART))>0) IN T0012
CASE NOT EMPTY(mdescri1).and.empty(mano)
SET FILTER TO upper(left(T0012.des_ART,miva))=UPPER(mdescri).and.upper(ALLTRIM(mdescri1))$UPPER(T0012.des_ART).and.atcc(ALLTRIM(UPPER(mmodel)),UPPER(T0012.mod_ART))>0) IN T0012
CASE EMPTY(mdescri1).and.not empty(mano)
SET FILTER TO upper(left(T0012.des_ART,miva))=UPPER(mdescri).and.upper(ALLTRIM(mano))$UPPER(T0012.mod_ART).and.atcc(ALLTRIM(UPPER(mmodel)),UPPER(T0012.mod_ART))>0) IN T0012
CASE NOT EMPTY(mdescri1).and.not empty(mano)
SET FILTER TO upper(left(T0012.des_ART,miva))=UPPER(mdescri).and.upper(ALLTRIM(mdescri1))$UPPER(T0012.des_ART).and.upper(ALLTRIM(mano))$UPPER(T0012.mod_ART).and.atcc(ALLTRIM(UPPER(mmodel)),UPPER(T0012.mod_ART))>0) IN T0012
ENDcase
THISFORM.REFRESH
Es complicadito pero funciona muy bien. Permite una búsqueda eficiente en una tabla (T0012) con más de 20.000 registros de repuestos de automóviles con su descripción y modelo. El resultado es mostrado en un grid desde el cual, presionando en el número de artículo, es posible seleccionar un registro en particular y ver otros datos. PERO.... todo es muy hermoso mientras no lo incluya en el ejecutable. Desde el .exe, no selecciona ningún registro. Y es el filter, no el grid, porque para salir de la duda le puse un brow a la salida del CASE y no muestra ningún registro.
Tengo un problema similar con otro form que busca en otra tabla, de casi 90.000 registros, muy bien siempre y cuando no lo corra desde el ejecutable.
Se me ocurren formas de reemplazar estos forms, pero no me gustan tanto visualmente, el usuario ya está acostumbrado a usarlos así y no puedo creer que haya algo que no funcione por el sólo hecho de incluirlo en un ejecutable. Por otro lado, tengo que hacer el ejecutable para que puedan trabajar desde varias máquinas a la vez de manera realmente interactiva.
Agradezco desde ya su ayuda.
Ana María
Valora esta pregunta


0