Page 1 of 1

Filtrar Dbcombo dependiendo de Otro

Posted: Wed Feb 07, 2007 12:48 am
by EASYSOFT
Hola amigos del foro

Tengo dos dbcombos el segungo quiero filtrarle dependiendo de lo seleccionado en el primero, no se si pueda, lo intente pero no me funciona, no me actualiza el dbcombo


Gracias.


Saludos
_

Posted: Wed Feb 07, 2007 2:37 am
by Databaselab2002
Estimado Amigo

Si se puede cualquier duda a tu disposicion

Fabian
Databaselab2002@yahoo.com.ar


0.2,5 DBCOMBO omarca VAR xmarca SIZE 80,80 OF odlg ;
ON CHANGE(MARMODV(XMARCA,OMODELO,XMODELO));
ALIAS "MARCAS" ;
ITEMFIELD "NAME" ;
LISTFIELD "NAME"


@ 1,3 SAY omarca Prompt "Codigo" OF odlg &&COLOR CLR_BLACK,CLR_5
@ 1,18 SAY olinea Prompt "Descripcion" OF odlg &&COLOR CLR_BLACK,CLR_5
@ 1,54 SAY olinea Prompt "Ampl. Foto" OF odlg size 30,10 &&COLOR CLR_BLACK,CLR_5


@ 1.8,356 btnbmp filENAME "visual1.bmp" CENTER NOBORDER OF oDlg size 10,10 action BLANK(ODESCRIP,XDESCRIP), Filtro( olbx,XMARCA,XLINEA,XCODIGO,XMODELO,OPRECIO)


*1***************




SELE 55
USE MODELOS &&alias marcas shared
index on MODELOS->MODELO to MODELOS
set index to MODELOS



@0.2,18 DBCOMBO omodelo VAR xmodelo SIZE 80,80 OF odLG ;
ALIAS "MODELOS" ;
ITEMFIELD "MODELO" ;
LISTFIELD "MODELO"



FUNCTION MARMODV(XMARCA,OMODELO,XMODELO)


Local aItemFld := {}
Local aItemList := {}



SELE 55
USE MODELOS &&alias marcas shared
set index to MODELOS

If ALLTRIM(xmarca)="TODAS LAS MARCAS"


dbGotop()

While ! Eof()

aAdd( aItemFld ,55->MODELO )
aAdd( aItemList,55->MODELO )

dbSkip()

End


oMODELO:SetItems( aItemFld, aItemList )
oModelo:Refresh()
* SET FILTER TO
SELE 5
Use Catalogo && alias catalogo shared
SET INDEX TO catalogo

SysRefresh()

ENDIF

Posted: Wed Feb 07, 2007 2:24 pm
by EASYSOFT
Gracias Fabian
Voy a probar, si tengo alguna duda te vuelvo a molestar

Posted: Thu Feb 08, 2007 2:00 pm
by Marcelo Via Giglio
Hola,

aqui te mando un DBCOMBO modificado, el archivo de cabecera es como sigue (para redefine)
#xcommand REDEFINE DBCOMBO [ <oCbx> VAR ] <cVar> ;
[ <items: ITEMS, PROMPTS> <aItems> ] ;
[ ID <nId> ] ;
[ <dlg:OF,WINDOW,DIALOG> <oWnd> ] ;
[ <help:HELPID, HELP ID> <nHelpId> ] ;
[ ON CHANGE <uChange> ] ;
[ VALID <uValid> ] ;
[ <color: COLOR,COLORS> <nClrText> [,<nClrBack>] ] ;
[ <update: UPDATE> ] ;
[ MESSAGE <cMsg> ] ;
[ WHEN <uWhen> ] ;
[ BITMAPS <acBitmaps> ] ;
[ ON DRAWITEM <uBmpSelect> ] ;
[ ALIAS <cAlias> ] ;
[ ITEMFIELD <cFldItem> ] ;
[ LISTFIELD <cFldList> ] ;
[ <list: LIST, PROMPTS> <aList> ] ;
[ <noblank: NOBLANK>] ;
[ ORDER <orden> ] ;
[ FOR <uCond> ] ;
=> ;
[ <oCbx> := ] TDBCombo():ReDefine( <nId>, bSETGET(<cVar>),;
<aItems>, <oWnd>, <nHelpId>, <{uValid}>, [{|Self|<uChange>}],;
<nClrText>, <nClrBack>, <cMsg>, <.update.>, <{uWhen}>,;
<acBitmaps>, [{|nItem|<uBmpSelect>}], ;
<cAlias>, <cFldItem>, <cFldList>, <aList>, <.noblank.>, <{uCond}>, <orden> )
Podras observar que existen 3 modificaciones

NOBLANK para que el primer elemento mostrado no sea blanco
ORDER en caso que la tabla tenga un indice puedes elegir por cual quieres que se ordene
FOR defines la condicion de los datos que se presentaran en el combo

Y el siguiente es un ejemplo de como utilizarlo
REDEFINE DBCOMBO oCbx1 ;
VAR oDbf:pais ;
ID 105 ;
OF oDlg ;
ALIAS "pais" ;
ITEMFIELD "c_pais" ;
LISTFIELD "pais" ;
ON CHANGE ( oCbx2:bFor := &("{|| ciudad -> c_pais ='" + oDBf:pais + "' }"),;
oCbx2:refill( .T. ), ;
oCbx2:Refresh(), ;
EVAL( oCbx2:bChange );
) ;
WHEN ! cJob $ "del,view"

REDEFINE DBCOMBO oCbx2 ;
VAR oDbf:ciudad ;
ID 106 ;
OF oDlg ;
ALIAS "ciudad" ;
ITEMFIELD "c_ciudad" ;
LISTFIELD "ciudad" ;
FOR ciudad -> c_pais = oDbf:pais ;
ON CHANGE ( oCbx3:bFor := &("{|| provincia -> c_pais ='" + oDBf:pais + "' .AND. provincia -> c_ciudad ='" + oDBf:ciudad + "' } "),;
oCbx3:refill( .T. ), ;
oCbx3:Refresh() ;
);
WHEN ! cJob $ "del,view"

REDEFINE DBCOMBO oCbx3 ;
VAR oDbf:prov ;
ID 107 ;
OF oDlg ;
ALIAS "provincia" ;
ITEMFIELD "c_prov" ;
LISTFIELD "prov" ;
FOR provincia -> c_pais = oDbf:pais .AND. provincia -> c_ciudad = oDbf:ciudad ;
WHEN ! cJob $ "del,view"
y aqui te dejo donde bajar el fuente


http://hyperupload.com/download/02fe4e ... o.zip.html

saludos[/url]

Posted: Thu Feb 08, 2007 11:19 pm
by EASYSOFT
Marcelo antes que nada gracias
Intente bajarlo pero no se pudo me dice que no se encuentra el archivo
seria mucha molestia melo envies a mi correo

easysoft@andinanet.net

Saludos
_

Posted: Fri Feb 09, 2007 12:09 pm
by Marcelo Via Giglio
Hola,

lo que paso es que se me fue un simbolo al final del url, prueba nuevamente

http://hyperupload.com/download/02fe4ef ... o.zip.html

141005-EASYSOFT wrote:Marcelo antes que nada gracias
Intente bajarlo pero no se pudo me dice que no se encuentra el archivo
seria mucha molestia melo envies a mi correo

easysoft@andinanet.net

Saludos
_

Posted: Fri Feb 09, 2007 2:22 pm
by EASYSOFT
Listo Marcelo eso era


Gracias


Saludos
_