Clipper/FiveWin - FILTER CON CDX

 
Vista:

FILTER CON CDX

Publicado por Luis Ponce (119 intervenciones) el 13/11/2007 18:31:05
Hola,

A duras me pase x fin a los indices CDX, estoy con FivwWin 2.6, Clipper 5.3b y linkeo con el Blinker 7 pero......... tengo un problema al hacer mis filtros :

Ejemplo

FUNCTION pedido(oLbx,cCodigo)

DbSetFilter(CODIGO=cCodigo,[CODIGO=cCodigo])

RETURN nil

Y en tiempo de ejecucion me da Variable no existe "cCodigo")

estoy haciendo algo mal ???

y es necesario el OrdSetFocus(1), siempre despues de abrir la base ?, tenia entendido que se abria automaticamente

De ante mano Gracias

Luis
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

RE:FILTER CON CDX

Publicado por El Duro (121 intervenciones) el 13/11/2007 22:21:35
Luis:

Te felicito por el logro de pasarte a indices CDX.

En cuanto a la primera pregunta, ¿ será porque estas definiendo mal el filtro ?

DBSETFILTER({||CODIGO==cCodigo},"CODIGO==cCodigo" )

Respecto a la segunda pregunta:

Al abrir la DBF se abre automaticamente el archivo que contiene los índices (BAG) pero tú debes definir cual índice es el activo (TAG), el primero, el segundo o el tercero, etc etc)

El Duro
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

RE:FILTER CON CDX

Publicado por Luis Ponce (119 intervenciones) el 14/11/2007 15:48:58
Duro

Gracias por la felicitacion, realmente esta costando "modernizarme" en mi consulta escribi mal el codigo, ofrezco mil disculpas, pero ese no es el problema, el tema es que me da "Variable no Existe", refiriendose al cPedido, es como que no existiera nombre.

Ahi comparto mi codigo, la variable "cPedido" es pasada como parametro.. y fijate me da ese error

FUNCTION ImpCmp(cCodDoc,cSerDoc,cNumero,dFecha,nCondPago,cCodPgo,cCodClt,cNomClt,nMoneda,nImporte,nElementos,cPedido,cCodVen,cCodZon)
LOCAL oDlgImp,oCmbDoc,oCmbPgo,oFntArial,oFntArial2,oSerDoc,oNumero,oFecha,oMoneda,oImporte,oBitMap,oVuelto,oRecibido

aArrClt:=QCliente(cCodClt)
cCodClt:=aArrClt[1]
cNomClt:=IIF(EMPTY(cNomClt),aArrClt[2],cNomClt)
nDcrClt:=aArrClt[3]
cDirClt:=aArrClt[4]
cDisClt:=aArrClt[8]
cRucClt:=aArrClt[7]
nDscto :=IIF(aArrClt[9]>IMPCPD,IMPCPD,aArrClt[9])

USE &FIL47 NEW SHARED Alias LPedido
LPedido->(OrdSetFocus(1))

DbSetFilter({|| LPedido->PEDIDO=cPedido},"LPedido->PEDIDO=cPedido")
LPedido->(DbGoTop())

Gracias nuevamente
Luis
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

RE:FILTER CON CDX

Publicado por El Duro (121 intervenciones) el 14/11/2007 17:14:04
Luis:

Aparentemente no hay error en el código que muestras o al menos no lo veo, se me ocurre que revises los parametros que estas pasando y recibiendo.

o muestra el código donde llamas a la función ImpCmp()

El Duro
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

RE:FILTER CON CDX

Publicado por Ricardo Ramírez Espinoza (201 intervenciones) el 14/11/2007 18:13:13
Luis......
Ya que estas usando .CDX, animate y usas SCOPES :)
Es mas rapido..

Saludos.
Ricardo Ramírez!
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

RE:FILTER CON CDX

Publicado por Luis Ponce (119 intervenciones) el 16/11/2007 01:27:36
Gracias x sus respuestas, me sucede lo mismo con otas funcion donde le paso un parametro, hago el filtro x ese parametro y me da el mismo error Variable no existe, no sera problema de algua de las librerias que enlazo (DBFCDX,_DBFCDX,DBFNTX)

Escopes ??, en vez de los DbSetFilter() ?

Saludos
Luis
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

RE:FILTER CON CDX

Publicado por El Duro (121 intervenciones) el 16/11/2007 02:10:57
Luis:

En un anterior mensaje te pedí me hicieras favor de mostrar el código donde haces el llamado a la función del filtro, si no lo publicaste supuse que ya lo habías solucionado.

Ayudanos a ayudarte !

El Duro
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

RE:FILTER CON CDX

Publicado por Ricardo Ramírez Espinoza (201 intervenciones) el 16/11/2007 19:44:27
Luis....

use tabla (automaticamen abre o CDX asociado)
set order to tag codigo //activar o key codigo

OrdScope(0 , "codigoinicial")
OrdScope(1 ,"codigofinal" )
browse()

asi estarias filtrando la tabla por codigo... desde el "codigoinicial" hasta "codigofinal"

son rapidisimos....

Saludos!
Ricardo Ramirez!
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

RE:FILTER CON CDX

Publicado por El Duro (121 intervenciones) el 16/11/2007 22:08:51
Luis:

Si vas a usar SCOPES, la DBF debe tener un índice por al menos el campo que vas a filtrar, de lo contrario no funciona.

Por contra el FILTER funciona aún si la DBF no tuviera índices.

El Duro
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

RE:FILTER CON CDX

Publicado por Luis Ponce (119 intervenciones) el 16/11/2007 22:42:03
AMIGOS, DURO :

Gracias x tu interes, te ayudo a que me ayudes

******Mi archivo Link :

BLINKER CLIPPER SYMBOL OFF
BLINKER EXECUTABLE COMPRESS
BLINKER EXECUTABLE CLIPPER F30
MAP A,S

PACKCODE
PACKDATA

FILE VT20999, VT20998, VT20100, VT20150, VT20199, VT20200, VT20299, VT20300, VT20400, VT20500, VT20550, VT20600, VT20700, VT20710, VT20800, VT20900, VT20340, VT20000
FILE TGET, TGRAPH, TDOSPRN, SSAY,TCBROWSE

DEFBEGIN
name FiveWin
description 'Clipper for Windows library'
exetype Windows 3.1
code moveable discardable
data preload moveable
stacksize 9500
heapsize 2048
segment 'PLANKTON_TEXT' nondiscardable
segment 'EXTEND_TEXT' nondiscardable
segment 'OM_TEXT' nondiscardable
segment 'OSMEM_TEXT' nondiscardable
segment 'SORTOF_TEXT' nondiscardable
segment 'STACK_TEXT' nondiscardable
DEFEND

NOBELL

SEARCH Five, FiveC, Objects, SBROWSE
LIB WinApi, Clipper, Extend, Terminal, dbfcdx, _dbfcdx, dbfntx, CTP53, BTNGET, FILEXLS

*******ESTA ES LA FUNCION QUE LLAMA A ImpCmp()

Function ShowPopCaja( nRow, nCol, oLbx, oDlg, nImporte )
LOCAL oPopup

MENU oPopup POPUP
MENUITEM "&Facturar" ACTION IIF(!EMPTY(Pedidos->IMPORTE),(aImpCmp:=ImpCmp(Pedidos->COMPROBANT,Pedidos->SERIE,UltDoc(Pedidos->COMPROBANT,Pedidos->SERIE),DATE(),1,'01',Pedidos->CODCLT,Pedidos->NOMBRE,Pedidos->MONEDA,Pedidos->IMPORTE,Pedidos->LINEAS,Pedidos->NUMERO,Pedidos->VENDEDOR,Pedidos->ZONA),oDlg:Update()),) WHEN nImporte>0.00
MENUITEM "&Detalle" ACTION DetPedido(Pedidos->NOMBRE,Pedidos->NUMERO) WHEN nImporte>0.00
MENUITEM "&Eliminar" ACTION (DelPedido(Pedidos->NUMERO,oLbx))
SEPARATOR
MENUITEM "&Salir"
ENDMENU

ACTIVATE POPUP oPopup AT nRow, nCol OF oLbx

Return nil

******Y ESTO ES PARTE DEL CODIGO QUE LLAMA A ShowPopCaja(), NO PONGO TODO X QUE ES MUY LARGO.

.....REDEFINE SAY oTitulo PROMPT "Pendientes de Facturar" ID 118 OF oDlgCaja FONT oFntArial2 COLORS nRgb(200,0,0)
REDEFINE LISTBOX oLbxPedido ;
FIELDS Pedidos->NUMERO, Pedidos->NOMBRE, TRANS(Pedidos->IMPORTE,MA72C) ;
ALIAS "Pedidos" ;
HEAD OemToAnsi('Pedido'), 'A Nombre de ', 'Total' ;
ON CHANGE (cCodClt:=Pedidos->CODCLT,cNomClt :=Pedidos->NOMBRE, ;
nTotPed:=Pedidos->IMPORTE,nLineas:=Pedidos->LINEAS, ;
cCodVen:=Pedidos->VENDEDOR,cCodZon:=Pedidos->ZONA, ;
cCodDoc:=Pedidos->COMPROBANT,cSerDoc:=Pedidos->SERIE,cObserva:=TRIM(Pedidos->OBSERVA),oDlgCaja:Update()) ;
ON DBLCLICK IIF(!EMPTY(Pedidos->IMPORTE),(aImpCmp:=ImpCmp(cCodDoc,cSerDoc,UltDoc(cCodDoc,cSerDoc),DATE(),1,'01',cCodClt,cNomClt,nMoneda,nTotPed,nLineas,Pedidos->NUMERO,cCodVen,cCodZon),nTotal:=RefreshCaja(oLbxPedido,oDlgCaja,oTotal),oDlgCaja:Update()),) ;
ON RIGHT CLICK ( ShowPopCaja( nRow, nCol, oLbxPedido, oDlgCaja,Pedidos->IMPORTE), oDlgCaja:Update() ) ;
FIELDSIZES 60, 330, 80 ;
FONT oFntArial ;
ID 114 OF oDlgCaja

oLbxPedido:aJustify := {.F.,.F.,.T.}
oLbxPedido:nClrPane := { || IIF( Pedidos->(RECNO())%2=0, nRGB( 153, 204, 255 ), nRGB( 230, 230, 230 ) )}..........................

*********HAY ALGO QUE VOY HACIENDO MAL ¿???

Y en el primer prg, al final de todo pongo esto :

ANNOUNCE RDDSys
INIT Procedure RDDInit()
REQUEST DBFCDX
RDDSetDefault( "DBFCDX")
RETURN

Yo tambien me felicité x haber pasado a los CDX’s y sigo contento, no perdere la viada.

GRACIAS
Luis Ponce
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

RE:FILTER CON CDX

Publicado por El Duro (121 intervenciones) el 16/11/2007 23:27:30
Luis:

Pues no se le ve nada malo al código, se me ocurre que compruebes la cantidad de paramteros que estas recibiendo en la función ImpCmp() para ver que es lo que te esta llegando.

El Duro
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

RE:FILTER CON CDX

Publicado por Ramon Paredes (47 intervenciones) el 19/11/2007 02:50:15
Luis,

A veces ese error que te presenta tiene relacion directa con la naturaleza de la variable que usas, haz lo siguiente, las variables que vas a pasar como parametros declaralas Static o Public y veras el resultado.

Te sugiero una vez termine la aplicacion, las variables que declares publcas le das asi : release variable1....2....etc. a fin de que dejen de ser publicas.

Saludes desde Managua, Nicaragua
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