Filtros ACUMULATIVOS.
Publicado por Hércules (5 intervenciones) el 03/05/2010 08:51:10
Estoy tratando de armar un filtro acumulativo..
Tengo un DO WHILE en donde identifico que fitros vienen con datos y los voy acumulando.. al filtro que voy a utilizar finalmente.
Para el primer filtro que tiene datos me muestra lo que trae la macrosustitución, pero para los siguientes filtros me envia lo de la primer macrosustitución más el nombre de los siguientes filtros..
QUE ESTA MAL.. ?
VFECDE = {}
VFECA = {}
VNP = ""
VORIGEN = ""
VDESTINO = ""
VTMOV = ""
VCANTIDAD = 0
VDOC = 0
FILTRO = ''
FILTRO1 = ''
FILTRO3 = ''
FILTRO4 = ''
FILTRO5 = ''
FILTRO6 = ''
FILTRO7 = ''
FILTRO8 = ''
STORE thisform.pageframe1.page1.txt_Fec.Value TO VFECDE
STORE thisform.pageframe1.page1.txt_Fec1.Value TO VFECA
STORE thisform.pageframe1.page1.txt_Doc.Value TO VDOC
STORE ALLTRIM(thisform.pageframe1.page1.txt_Concepto.Value) TO VTMOV
STORE ALLTRIM(thisform.pageframe1.page1.txt_NP.Value) TO VNP
STORE ALLTRIM(thisform.pageframe1.page1.txt_Origen.Value) TO VORIGEN
STORE ALLTRIM(thisform.pageframe1.page1.txt_Destino.Value) TO VDESTINO
STORE thisform.pageframe1.page1.txt_Cantidad.Value TO VCANTIDAD
FILTRO1 = iif(!empty(VFECA),'kardex.kr_FEC >= VFECDE AND kardex.kr_FEC <= VFECA',iif(!empty(VFECDE),'kardex.kr_FEC = VFECDE',FILTER()))
FILTRO2 = IIF(!EMPTY(VDOC),'kardex.kr_doc = VDOC',FILTER())
FILTRO3 = IIF(!EMPTY(VTMOV),'ALLTRIM(kardex.kr_conc) = VTMOV',FILTER())
FILTRO4 = IIF(!EMPTY(VNP),'ALLTRIM(kardex.kr_np) = VNP',FILTER())
FILTRO5 = IIF(!EMPTY(VORIGEN),'ALLTRIM(kardex.kr_orig) = VORIGEN',FILTER())
FILTRO6 = IIF(!EMPTY(VDESTINO),'ALLTRIM(kardex.kr_dest) = VDESTINO',FILTER())
FILTRO7 = IIF(!EMPTY(VCANTIDAD),'kardex.kr_cant = VCANTIDAD',FILTER())
FILTRO = FILTER()
&& ----
VNFILTRO = 0
DO WHILE .T. && Begins loop
VNFILTRO = VNFILTRO + 1
IF VNFILTRO = 8
EXIT
ENDIF
FILTROX = 'FILTRO'+ALLTRIM(STR(VNFILTRO))
IF !EMPTY(FILTRO) AND !EMPTY(&FILTROX)
FILTRO = '&FILTRO AND &FILTROX'
WAIT FILTRO windows
ELSE
IF !EMPTY(&FILTROX) AND EMPTY(FILTRO)
FILTRO = &FILTROX
WAIT FILTRO windows
ENDIF
ENDIF
LOOP
ENDDO && Ends loop
&& ----
Tengo un DO WHILE en donde identifico que fitros vienen con datos y los voy acumulando.. al filtro que voy a utilizar finalmente.
Para el primer filtro que tiene datos me muestra lo que trae la macrosustitución, pero para los siguientes filtros me envia lo de la primer macrosustitución más el nombre de los siguientes filtros..
QUE ESTA MAL.. ?
VFECDE = {}
VFECA = {}
VNP = ""
VORIGEN = ""
VDESTINO = ""
VTMOV = ""
VCANTIDAD = 0
VDOC = 0
FILTRO = ''
FILTRO1 = ''
FILTRO3 = ''
FILTRO4 = ''
FILTRO5 = ''
FILTRO6 = ''
FILTRO7 = ''
FILTRO8 = ''
STORE thisform.pageframe1.page1.txt_Fec.Value TO VFECDE
STORE thisform.pageframe1.page1.txt_Fec1.Value TO VFECA
STORE thisform.pageframe1.page1.txt_Doc.Value TO VDOC
STORE ALLTRIM(thisform.pageframe1.page1.txt_Concepto.Value) TO VTMOV
STORE ALLTRIM(thisform.pageframe1.page1.txt_NP.Value) TO VNP
STORE ALLTRIM(thisform.pageframe1.page1.txt_Origen.Value) TO VORIGEN
STORE ALLTRIM(thisform.pageframe1.page1.txt_Destino.Value) TO VDESTINO
STORE thisform.pageframe1.page1.txt_Cantidad.Value TO VCANTIDAD
FILTRO1 = iif(!empty(VFECA),'kardex.kr_FEC >= VFECDE AND kardex.kr_FEC <= VFECA',iif(!empty(VFECDE),'kardex.kr_FEC = VFECDE',FILTER()))
FILTRO2 = IIF(!EMPTY(VDOC),'kardex.kr_doc = VDOC',FILTER())
FILTRO3 = IIF(!EMPTY(VTMOV),'ALLTRIM(kardex.kr_conc) = VTMOV',FILTER())
FILTRO4 = IIF(!EMPTY(VNP),'ALLTRIM(kardex.kr_np) = VNP',FILTER())
FILTRO5 = IIF(!EMPTY(VORIGEN),'ALLTRIM(kardex.kr_orig) = VORIGEN',FILTER())
FILTRO6 = IIF(!EMPTY(VDESTINO),'ALLTRIM(kardex.kr_dest) = VDESTINO',FILTER())
FILTRO7 = IIF(!EMPTY(VCANTIDAD),'kardex.kr_cant = VCANTIDAD',FILTER())
FILTRO = FILTER()
&& ----
VNFILTRO = 0
DO WHILE .T. && Begins loop
VNFILTRO = VNFILTRO + 1
IF VNFILTRO = 8
EXIT
ENDIF
FILTROX = 'FILTRO'+ALLTRIM(STR(VNFILTRO))
IF !EMPTY(FILTRO) AND !EMPTY(&FILTROX)
FILTRO = '&FILTRO AND &FILTROX'
WAIT FILTRO windows
ELSE
IF !EMPTY(&FILTROX) AND EMPTY(FILTRO)
FILTRO = &FILTROX
WAIT FILTRO windows
ENDIF
ENDIF
LOOP
ENDDO && Ends loop
&& ----
Valora esta pregunta


0