Recd
I will get back to you
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
Recd
I will get back to you
Mr. Rao.
Ok
Thanks for your effort
oBrw:oTreeItem:SetText( cNewValue )Mr. Rao:
Perfect !
now what should I do to refresh a new branch?
Regards
#include "fivewin.ch"
#include "dbcombo.ch"
static oMarcas, oModelos
function Main()
聽 聽local oCn, oRs, cSql
聽 聽local oDlg, oBrw, oFont
聽 聽FWNumFormat( "A", .t. )
聽 聽SetGetColorFocus()
聽 聽MsgRun( "Connecting", "FW Clould Server", { || ;
聽 聽oCn := maria_Connect( "209.250.245.152,fwh,fwhuser,FiveTech@2022", .t. ) } )
聽 聽if oCn == nil; return nil; endif
聽 聽oCn:lShowErrors := .t.
TEXT INTO cSql
SELECT A.*, B.MAR_DES, C.MOD_DES
聽FROM partes A
聽LEFT JOIN marcas B ON A.PAR_MAR = B.MAR_NUM
聽LEFT JOIN modelos C ON A.PAR_MAR = C.MOD_MAR AND A.PAR_MOD = C.MOD_COD
聽ORDER BY PAR_MAR,PAR_MOD,PAR_COD
ENDTEXT
聽 聽oMarcas 聽:= oCn:RowSet( "marcas" )
聽 聽oModelos := oCn:RowSet( "modelos" )
聽 聽MsgRun( "Opening table", "partes", { || ;
聽 聽oRs 聽 := oCn:RowSet( cSql ) } )
聽 聽DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
聽 聽DEFINE DIALOG oDlg SIZE 700,400 PIXEL TRUEPIXEL FONT oFont RESIZABLE
聽 聽@ 60,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg ;
聽 聽 聽 DATASOURCE oRs ;
聽 聽 聽 COLUMNS "MAR_DES","MOD_DES","PAR_DES","PAR_COD";
聽 聽 聽 HEADERS "Marca","Modelo","Nombre o descripci贸n","C贸digo";
聽 聽 聽 CELL LINES NOBORDER
聽 聽WITH OBJECT oBrw
聽 聽 聽 :nStretchCol := 1
聽 聽 聽 :SetTree( 3 )
聽 聽 聽 :oTree:OpenAll()
聽 聽 聽 :lDisplayZeros := .f.
聽 聽 聽 :bClrStd := { || { CLR_BLACK, If( oBrw:oTreeItem:oTree == nil, CLR_WHITE, CLR_YELLOW ) } }
聽 聽 聽 :bEdit 聽 := { |oRec| Editar( oRec ) }
聽 聽 聽 :blDblClick 聽 聽 聽 := { || oBrw:EditSource() }
聽 聽 聽 :bKeyDown 聽 聽 聽 聽 := { |nKey| IIF(nKey == VK_RETURN, oBrw:EditSource(), ) }
聽 聽 聽 :bChange := { || oDlg:AEvalWhen() }
聽 聽 聽 :CreateFromCode()
聽 聽END
聽 聽@ 10, 20 BUTTON "ADD" 聽 聽SIZE 100,40 PIXEL OF oDlg ACTION MsgInfo( "Not implemented" ) ;
聽 聽 聽 WHEN Empty( oBrw:oTreeItem:oTree )
聽 聽@ 10,140 BUTTON "EDIT" 聽 SIZE 100,40 PIXEL OF oDlg ACTION oBrw:EditSource() ;
聽 聽 聽 WHEN oBrw:oTreeItem:Cargo > 0
聽 聽@ 10,260 BUTTON "Delete" SIZE 100,40 PIXEL OF oDlg ACTION MsgInfo( "Not implemented" ) ;
聽 聽 聽 WHEN Empty( oBrw:oTreeItem:oTree )
聽 聽ACTIVATE DIALOG oDlg CENTERED
聽 聽RELEASE FONT oFont
聽 聽oRs:Close()
聽 聽oCn:Close()
return nil
function Editar( oRec ) // oRec is FW_Record Object
聽 聽local lAppend 聽 聽 := ( oRec:RecNo == 0 )
聽 聽local oBrw 聽 聽 聽 聽:= oRec:oBrw
聽 聽local oTreeItem 聽 := oBrw:oTreeItem
聽 聽local oDlg, oCbx1, oCbx2
聽 聽if lAppend
聽 聽 聽 ? "append not implemented"
聽 聽 聽 return nil
聽 聽endif
聽 聽oRec:bOnSave := { || oTreeItem:cPrompt := oRec:par_des }
聽 聽DEFINE DIALOG oDlg SIZE 400,180 PIXEL TRUEPIXEL
聽 聽@ 聽22, 20 SAY "MAR_DES" SIZE 60,24 PIXEL OF oDlg
聽 聽@ 聽20, 90 DBCOMBO oCbx1 VAR oRec:par_mar SIZE 200,24 PIXEL OF oDlg ;
聽 聽 聽 ALIAS oMarcas ITEMFIELD "MAR_NUM" LISTFIELD "MAR_DES" ;
聽 聽 聽 WHEN lAppend
聽 聽@ 聽52, 20 SAY "MOD_DES" SIZE 60,24 PIXEL OF oDlg
聽 聽@ 聽50, 90 DBCOMBO oCbx2 VAR oRec:par_mod SIZE 200,24 PIXEL OF oDlg ;
聽 聽 聽 ALIAS oModelos ITEMFIELD "MOD_COD" LISTFIELD "MOD_DES" ;
聽 聽 聽 WHEN lAppend
聽 聽@ 聽80, 20 SAY "PAR_DES" GET oRec:par_des SIZE 340,24 PIXEL OF oDlg
聽 聽@ 120, 20 BUTTON "SAVE" 聽SIZE 80,30 PIXEL OF oDlg ACTION ( oRec:Save() )
聽 聽@ 120,140 BUTTON "CLOSE" SIZE 80,30 PIXEL OF oDlg ACTION oDlg:End()
聽 聽ACTIVATE DIALOG oDlg CENTERED
return nil
#include "fivewin.ch"
#include "dbcombo.ch"
REQUEST DBFCDX
static oMarcas, oModelos
function Main()
聽 聽local oCn, oRs, cSql
聽 聽local oDlg, oBrw, oFont, oTree
聽 聽FWNumFormat( "A", .t. )
聽 聽SetGetColorFocus()
聽 聽MsgRun( "Connecting", "FW Clould Server", { || ;
聽 聽oCn := maria_Connect( "209.250.245.152,fwh,fwhuser,FiveTech@2022", .t. ) } )
聽 聽if oCn == nil; return nil; endif
聽 聽oCn:lShowErrors := .t.
TEXT INTO cSql
SELECT A.*, B.MAR_DES, C.MOD_DES
聽FROM partes A
聽LEFT JOIN marcas B ON A.PAR_MAR = B.MAR_NUM
聽LEFT JOIN modelos C ON A.PAR_MAR = C.MOD_MAR AND A.PAR_MOD = C.MOD_COD
聽ORDER BY PAR_MAR,PAR_MOD,PAR_COD
ENDTEXT
聽 聽oMarcas 聽:= oCn:RowSet( "marcas" )
聽 聽oModelos := oCn:RowSet( "modelos" )
聽 聽MsgRun( "Opening table", "partes", { || ;
聽 聽oRs 聽 := oCn:RowSet( cSql ) } )
聽 聽DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
聽 聽DEFINE DIALOG oDlg SIZE 700,600 PIXEL TRUEPIXEL FONT oFont RESIZABLE
聽 聽@ 60,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg ;
聽 聽 聽 DATASOURCE oRs ;
聽 聽 聽 COLUMNS "MAR_DES","MOD_DES","PAR_DES","PAR_COD";
聽 聽 聽 HEADERS "Marca","Modelo","Nombre o descripci贸n","C贸digo";
聽 聽 聽 CELL LINES NOBORDER
聽 聽WITH OBJECT oBrw
聽 聽 聽 :nStretchCol := 1
聽 聽 聽 :SetTree( 3 )
聽 聽 聽 :oTree:OpenAll()
聽 聽 聽 :lDisplayZeros := .f.
聽 聽 聽 :bClrStd := { || { CLR_BLACK, If( oBrw:oTreeItem:oTree == nil, CLR_WHITE, CLR_YELLOW ) } }
聽 聽 聽 :bEdit 聽 := { |oRec| Editar( oRec ) }
聽 聽 聽 :blDblClick 聽 聽 聽 := { || oBrw:EditSource() }
聽 聽 聽 :bKeyDown 聽 聽 聽 聽 := { |nKey| IIF(nKey == VK_RETURN, oBrw:EditSource(), ) }
聽 聽 聽 :bChange := { || oDlg:AEvalWhen() }
聽 聽 聽 :CreateFromCode()
聽 聽END
聽 聽@ 10, 20 BUTTON "ADD" 聽 聽SIZE 100,40 PIXEL OF oDlg ACTION oBrw:EditSource( .t. )
聽 聽@ 10,140 BUTTON "EDIT" 聽 SIZE 100,40 PIXEL OF oDlg ACTION oBrw:EditSource() ;
聽 聽 聽 WHEN oBrw:oTreeItem:Cargo > 0
聽 聽@ 10,260 BUTTON "Delete" SIZE 100,40 PIXEL OF oDlg ACTION ( ;
聽 聽 聽 oBrw:Delete(), oBrw:oTreeItem:Delete(), oBrw:Refresh(), oBrw:Change() ) 聽;
聽 聽 聽 WHEN oBrw:oTreeItem:Cargo > 0
聽 聽ACTIVATE DIALOG oDlg CENTERED
聽 聽RELEASE FONT oFont
聽 聽oRs:Close()
聽 聽oCn:Close()
return nil
function Editar( oRec ) // oRec is FW_Record Object
聽 聽local lAppend 聽 聽 := ( oRec:RecNo == 0 )
聽 聽local oBrw 聽 聽 聽 聽:= oRec:oBrw
聽 聽local oTreeItem 聽 := oBrw:oTreeItem
聽 聽local oDlg, oCbx1, oCbx2
聽 聽if lAppend
聽 聽 聽 oRec:bOnSave := { |oRec| OnAppend( oRec ), oDlg:End() }
聽 聽else
聽 聽 聽 oRec:bOnSave := { || oTreeItem:cPrompt := oRec:par_des }
聽 聽endif
聽 聽oRec:bValid := { |o| !( EMPTY( o:par_mar ) .or. EMPTY( o:par_mod ) .or. EMPTY( o:par_cod ) ) }
聽 聽DEFINE DIALOG oDlg SIZE 400,220 PIXEL TRUEPIXEL
聽 聽@ 聽22, 20 SAY "MAR_DES" SIZE 60,24 PIXEL OF oDlg
聽 聽@ 聽20, 90 DBCOMBO oCbx1 VAR oRec:par_mar SIZE 200,24 PIXEL OF oDlg ;
聽 聽 聽 ALIAS oMarcas ITEMFIELD "MAR_NUM" LISTFIELD "MAR_DES" ;
聽 聽 聽 WHEN lAppend
聽 聽oCbx1:bChange := <||
聽 聽 聽 oModelos:Filter := "MOD_MAR=" + cValToChar( oRec:par_mar )
聽 聽 聽 oModelos:MoveFirst()
聽 聽 聽 oCbx2:Refill()
聽 聽 聽 oCbx2:Refresh()
聽 聽 聽 return .t.
聽 聽 聽 >
聽 聽@ 聽52, 20 SAY "MOD_DES" SIZE 60,24 PIXEL OF oDlg
聽 聽@ 聽50, 90 DBCOMBO oCbx2 VAR oRec:par_mod SIZE 200,24 PIXEL OF oDlg ;
聽 聽 聽 ALIAS oModelos ITEMFIELD "MOD_COD" LISTFIELD "MOD_DES" ;
聽 聽 聽 WHEN lAppend
聽 聽@ 聽80, 20 SAY "PAR_COD" GET oRec:par_cod SIZE 200,24 PIXEL OF oDlg
聽 聽@ 110, 20 SAY "PAR_DES" GET oRec:par_des SIZE 340,24 PIXEL OF oDlg
聽 聽@ 160, 20 BUTTON "SAVE" 聽SIZE 80,30 PIXEL OF oDlg ACTION oRec:Save( .t. ) ;
聽 聽 聽 WHEN oRec:Modified()
聽 聽@ 160,140 BUTTON "CLOSE" SIZE 80,30 PIXEL OF oDlg ACTION oDlg:End()
聽 聽ACTIVATE DIALOG oDlg CENTERED
return nil
static function OnAppend( oRec )
聽 聽local nNewRec 聽:= oRec:RecNo
聽 聽local oBrw 聽 聽 := oRec:oBrw
聽 聽local oRs 聽 聽 聽:= oBrw:uDataSource
聽 聽local oTree, nLen, oItem
聽 聽local aBlocks 聽:= { 聽{ || oRs:Fields( "MAR_DES" ):Value }, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 { || oRs:Fields( "MOD_DES" ):Value }, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 { || oRs:Fields( "PAR_DES" ):Value } 聽}
聽 聽oRs:ReQuery()
聽 聽oRs:Sort := "PAR_MAR,PAR_MOD,PAR_COD"
聽 聽oRs:MoveFirst()
聽 聽nLen 聽:= oRs:RecordCount()
聽 聽oTree := SummaryDataAsTree( ;
聽 聽 聽 { || oRs:Move( 1 ) }, { |nRow| nRow > nLen }, aBlocks, { || oRs:BookMark } )
聽 聽oTree:OpenAll()
聽 聽oBrw:oTree 聽:= oTree
聽 聽oBrw:GoTop()
聽 聽oBrw:Refresh()
return nilMr. Rao:
Thanks, I'll try it.
Regards