supongamos :
dfecha:=date()-90
cfiltro:="facturas->fecha >="+dtoc(dfecha)
bfiltro:=&("{||"+cfiltro+"}" )
facturas->(dbsetfilter(bfiltro,cfiltro))no me funciona en xharbour y ads , ¿donde está el fallo ?
Asturias
dfecha:=date()-90
cfiltro:="facturas->fecha >="+dtoc(dfecha)
bfiltro:=&("{||"+cfiltro+"}" )
facturas->(dbsetfilter(bfiltro,cfiltro))dfecha:=date()-90
cfiltro:="facturas->fecha >="+ DTOS(dfecha)//<--- cambia aqui
bfiltro:=&("{||"+cfiltro+"}" )
facturas->(dbsetfilter(bfiltro,cfiltro))dfecha:=date()-90
cfiltro:="facturas->fecha >=ctod('"+dtoc(dfecha)+"')"
bfiltro:=&("{||"+cfiltro+"}" )
facturas->(dbsetfilter(bfiltro,cfiltro))Jejeje, pues va a ser que no es un AOF.
Recuerda: lo que estás haciendo es un FILTRO, no un SCOPE, por lo tanto puedes utilizar el DTOS() tranquilamente en vez del DTOC(), ten en cuenta que el FILTRO no requiere del INDICE para nada.
Si estuvieras haciendo SCOPE, entonces si tendrias que tener indexado sobre DTOS, pero como no lo es, el truco del DTOS() en la expresion te vale para filtrar correctamente.
Rene , pues con dtos(dfecha) no me funciona el filtro ¿?
, me sale que no existen resultados para la expresion (hago un dbgotop() , y el registro es el eof() ) .
Por otra parte revisando la ayuda de advantage en la seccion aof encontre esto :
For example, consider the filter expression:
hiredate > CTOD(‘1/19/90’) .OR. ( hiredate > CTOD(‘1/18/85’) .AND. deptnum = 15)
If field "hiredate" is indexed and field "deptnum" is not, the expression will be partially optimized. Each simple expression involving field "hiredate" will be fully optimized but the simple expression involving field "deptnum" will not be optimized. The expression can be viewed as:
Full .OR. (Full .AND. Not Optimized)
según lo que pone parece como que en este caso los indices no fueran dtos(dfecha) , y pone que está optimizado ¿? .
Sigo sin aclararme demasiado .
saludso y gracias por perder el tiempo conmigo.
![]()
![]()