× Linguagem de Programação ADVPL

Perguntas Abrir tela de registro apos item marcado no browse

Mais
2 anos 8 meses atrás #33123 por Wanderson
Bom dia Turma,

Estou precisando da ajuda de vocês para concluir um fonte que comecei a fazer, ele cria a FWMBROWSE usando uma tabela temporária pois esta tabela não faz parte das tabelas disponíveis no Protheus mas utiliza a mesma base de dados. A Inclusão já está funcionando corretamente agora a Alteração é onde estou tendo problemas e preciso da ajuda de voce se possível. Quando selecione um registro no browse e seleciono a opção Alterar, ele não esta me trazendo os dados selecionado no browse, estou disponibilizando o fonte caso alguém possa me ajudar nesta questão.

Fonte:

#Include ‘Totvs.ch‘
#Include ‘Topconn.ch‘

User Function VSPFIN29()
Local cArqTrb, cIndice1, cIndice2, cIndice3
Local i
Private oBrowse
Private aRotina := MenuDef()
Private cCadastro := "DIRETORES"
Private aCampos := {}, aSeek := {}, aDados := {}, aValores := {}, aFieFilter := {}

//Array contendo os campos da tabela temporária
AAdd(aCampos,{"TR_ST" , "C" , 01 , 0})
AAdd(aCampos,{"TR_Diret", "C" , 20 , 0})
AAdd(aCampos,{"TR_Natur", "C" , 10 , 0})
AAdd(aCampos,{"TR_DtCad", "D" , 08 , 0})
AAdd(aCampos,{"TR_Venci", "D" , 08 , 0})
AAdd(aCampos,{"TR_Valor", "N" , 14 , 2})
AAdd(aCampos,{"TR_Descr", "C" , 99 , 0})

//Antes de criar a tabela, verificar se a mesma já foi aberta
If (Select("TRB") <> 0)
dbSelectArea("TRB")
TRB->(dbCloseArea ())
Endif

//Criar tabela temporária
cArqTrb := CriaTrab(aCampos,.T.)

//Definir indices da tabela
cIndice1 := Alltrim(CriaTrab(,.F.))
cIndice2 := cIndice1
cIndice3 := cIndice1
cIndice1 := Left(cIndice1,5)+Right(cIndice1,2)+"A"
cIndice2 := Left(cIndice2,5)+Right(cIndice2,2)+"B"
cIndice3 := Left(cIndice3,5)+Right(cIndice3,2)+"C"
If File(cIndice1+OrdBagExt())
FErase(cIndice1+OrdBagExt())
EndIf
If File(cIndice2+OrdBagExt())
FErase(cIndice2+OrdBagExt())
EndIf
If File(cIndice3+OrdBagExt())
FErase(cIndice3+OrdBagExt())
EndIf

//Criar e abrir a tabela
dbUseArea(.T.,,cArqTrb,"TRB",Nil,.F.)

/*Criar indice*/
IndRegua("TRB", cIndice1, "TR_Diret",,, "Indice ID...")
IndRegua("TRB", cIndice2, "TR_Natur",,, "Indice Login...")
IndRegua("TRB", cIndice3, "TR_DtCad",,, "Indice Nome...")
dbClearIndex()
dbSetIndex(cIndice1+OrdBagExt())
dbSetIndex(cIndice2+OrdBagExt())
dbSetIndex(cIndice3+OrdBagExt())

/*popular a tabela*/
cQuery:=‘ SELECT * FROM FLUXO_DIRETORES‘
TcQuery cQuery New Alias "TMPDIRETORES"

While ! TMPDIRETORES->( EOF() )

aAdd(avalores,{‘a‘,TMPDIRETORES->DIRETOR,TMPDIRETORES->NATUREZA,TMPDIRETORES->DTCADASTRO,TMPDIRETORES->VENCIMENTO,TMPDIRETORES->VALOR,TMPDIRETORES->DESCRICAO})

TMPDIRETORES->( dbSkip() )
ENDDO

For i:= 1 to len(aValores)
If RecLock("TRB",.t.)
TRB->TR_Diret := aValores[i,2]
TRB->TR_Natur := aValores[i,3]
TRB->TR_DtCad := sTod(aValores[i,4])
TRB->TR_Venci := sTod(aValores[i,5])
TRB->TR_Valor := (aValores[i,6])
TRB->TR_Descr := aValores[i,7]

// TRB->TR_POS := i
MsUnLock()
Endif
Next
dbSelectArea("TRB")
TRB->(DbGoTop())
//Campos que irão compor o combo de pesquisa na tela principal
Aadd(aSeek,{"Diretor" , {{"","C",06,0, "TR_Diret" ,"@!"}}, 1, .T. } )
Aadd(aSeek,{"Natureza" , {{"","C",20,0, "TR_Natur","@!"}}, 2, .T. } )
Aadd(aSeek,{"Dta.Cadastro" , {{"","D",08,0, "TR_DtCad" ,"@!"}}, 3, .T. } )

//Campos que irão compor a tela de filtro
Aadd(aFieFilter,{"TR_Diret" , "Diretor" , "C", 10, 0,"@!"})
Aadd(aFieFilter,{"TR_Natur" , "Natureza" , "C", 10, 0,"@!"})
Aadd(aFieFilter,{"TR_DtCad" , "Dta.Cadastro" , "D", 08, 0,"@!"})

oBrowse := FWmBrowse():New()
oBrowse:SetAlias( "TRB" )
oBrowse:SetDescription( cCadastro )
oBrowse:SetSeek(.T.,aSeek)
oBrowse:SetTemporary(.T.)
oBrowse:SetLocate()
oBrowse:SetUseFilter(.T.)
oBrowse:SetDBFFilter(.T.)
oBrowse:SetFilterDefault( "" ) //Exemplo de como inserir um filtro padrão >>> "TR_ST == ‘A‘"
oBrowse:SetFieldFilter(aFieFilter)
oBrowse:DisableDetails()
// Seta o Array de dados para a browse
oBrowse:SetArray(aValores)

//Legenda da grade, é obrigatório carregar antes de montar as colunas
oBrowse:AddLegend("TR_ST==‘A‘","GREEN" ,"Grupo Administradores")
oBrowse:AddLegend("TR_ST==‘C‘","BLUE" ,"Grupo Contábil")
oBrowse:AddLegend("TR_ST==‘R‘","RED" ,"Grupo RH")


//Detalhes das colunas que serão exibidas
oBrowse:SetColumns(MontaColunas("TR_Diret" ,"Diretor" ,01,"@!",0,010,0))
oBrowse:SetColumns(MontaColunas("TR_Natur" ,"Natureza" ,02,"@!",1,080,0))
oBrowse:SetColumns(MontaColunas("TR_DtCad" ,"Dt.Cadastro" ,03,"D" ,1,008,0))
oBrowse:SetColumns(MontaColunas("TR_Venci" ,"Vencimento" ,04,"D" ,1,008,0))
oBrowse:SetColumns(MontaColunas("TR_Valor" ,"Valor" ,05,"N" ,1,10,2))
oBrowse:SetColumns(MontaColunas("TR_Descr" ,"Descricao" ,06,"@!",1,100,0))

oBrowse:Activate()
If !Empty(cArqTrb)
Ferase(cArqTrb+GetDBExtension())
Ferase(cArqTrb+OrdBagExt())
cArqTrb := ""
TRB->(DbCloseArea())
delTabTmp(‘TRB‘)
dbClearAll()
Endif

return(Nil)
Static Function MontaColunas(cCampo,cTitulo,nArrData,cPicture,nAlign,nSize,nDecimal)
Local aColumn
Local bData :={||}
Default nAlign := 1
Default nSize := 20
Default nDecimal := 0
Default nArrData := 0

If nArrData > 0
bData := &("{||" + cCampo +"}")
EndIf

aColumn := {cTitulo,bData,,cPicture,nAlign,nSize,nDecimal,.F.,{||.T.},.F.,{||.T.},NIL,{||.T.},.F.,.F.,{}}
Return {aColumn}
Static Function MenuDef()
Local aArea := GetArea()
Local aRotina := {}
Local aRotina1 := {}

AADD(aRotina1, {"Consulta Produto" , "MATC050()" , 0, 6, 0, Nil })
AADD(aRotina1, {"Legenda" , "U_EXEM992L" , 0,11, 0, Nil })

AADD(aRotina, {"Pesquisar" , "PesqBrw" , 0, 1, 0, .T. })
AADD(aRotina, {"Visualizar" , "U_EXEM992I" , 0, 2, 0, .F. })
AADD(aRotina, {"Incluir" , "U_BtnInclui" , 0, 3, 0, Nil })
AADD(aRotina, {"Alterar" , "U_BtnAlter" , 0, 4, 0, Nil })
AADD(aRotina, {"Excluir" , "U_EXEM992I" , 0, 5, 3, Nil })

AADD(aRotina, {"Mais ações..." , aRotina1 , 0, 4, 0, Nil } )

Return( aRotina )



User Function BtnInclui()

Private cCpoDire := Space(20)
Private cCpoNatu := Space(15)
Private cmCpoDesc
Private dCpoDtCa := CtoD(" ")
Private dCpoDtvenc := CtoD(" ")
Private nCpoValo := 0
Private cTitulo := " Inclusão de Dados "


SetPrvt("oDlg","oSay1","oSay2","oSay3","oSay4","oSay5","oSay6","cCpoDire","cCpoNatu","dCpoDtCa","dCpoDtvenc")
SetPrvt("mCpoDesc","oGet1","oBtn1")

oDlg := MSDialog():New( 138,1569,485,2259,"Inclusão - Diretor",,,.F.,,,,,,.T.,,,.T. )
U_VSPTIT(cTitulo)
oSay1 := TSay():New( 036,008,{||"Diretor"},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
oSay2 := TSay():New( 056,008,{||"Natureza"},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
oSay3 := TSay():New( 076,008,{||"Data Cadastro"},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
oSay4 := TSay():New( 100,008,{||"Data Vencimento"},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
oSay5 := TSay():New( 120,008,{||"Valor"},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
oSay6 := TSay():New( 076,144,{||"Descricao"},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,032,008)

oCpoDire := TGet():New( 036,068,{|u| If(PCount()>0,cCpoDire:=u,cCpoDire)},oDlg,176,013,‘‘,,CLR_BLACK,CLR_WHITE,,,,.T.,"",,,.T.,.F.,,.F.,.F.,"","cCpoDire",,)
oCpoNatu := TGet():New( 056,068,{|u| If(PCount()>0,cCpoNatu:=u,cCpoNatu)},oDlg,065,013,‘‘,,CLR_BLACK,CLR_WHITE,,,,.T.,"",,,.T.,.F.,,.F.,.F.,"SED","cCpoNatu",,)
oCpoDtCa := TGet():New( 076,068,{|u| If(PCount()>0,dCpoDtCa:=u,dCpoDtCa)},oDlg,065,013,‘‘,,CLR_BLACK,CLR_WHITE,,,,.T.,"",,,.T.,.F.,,.F.,.F.,"","dCpoDtCa",,)
oCpoDtvenc := TGet():New( 100,068,{|u| If(PCount()>0,dCpoDtvenc:=u,dCpoDtvenc)},oDlg,065,013,‘‘,,CLR_BLACK,CLR_WHITE,,,,.T.,"",,,.T.,.F.,,.F.,.F.,"","dCpoDtvenc",,)
oCpoValo := TGet():New( 120,068,{|u| If(PCount()>0,nCpoValo:=u,nCpoValo)},oDlg,065,013,‘999,999,999.99‘,,CLR_BLACK,CLR_WHITE,,,,.T.,"",,,.F.,.F.,,.F.,.F.,"","nCpoValo",,)
oCpoDesc := TMultiGet():New( 088,144,{|u| If(PCount()>0,cmCpoDesc:=u,cmCpoDesc)},oDlg,188,044,,,CLR_BLACK,CLR_WHITE,,.T.,"",,,.F.,.F.,.F.,,,.F.,, )
oGet1 := TGet():New( 056,136,,oDlg,200,013,‘‘,,CLR_BLACK,CLR_HGRAY,,,,.T.,"",,,.T.,.F.,,.F.,.F.,"","",,)
oGet1:Disable()
oBtn1 := TButton():New( 004,260,"Incluir" ,oDlg,{||InseCpos()}, 40,10,,,.F.,.T.,.F.,,.F.,,,.F. )

oDlg:Activate(,,,.T.)
Return

Static Function InseCpos()

cIns := " INSERT INTO FLUXO_DIRETORES VALUES(‘"+cCpoDire+"‘,‘"+cCpoNatu+"‘,‘"+Dtos(dCpoDtCa)+"‘,‘"+Dtos(dCpoDtvenc)+"‘,‘"+cValToChar(nCpoValo)+"‘,‘"+cmCpoDesc+"‘)"
TcSqlExec( cIns )
FWAlertSuccess( "Registro Gravado com Sucesso!!!", "Novo Registro")
LimpaCpo()
Return

Static Function LimpaCpo()
cCpoDire :=‘‘
cCpoNatu :=‘‘
dCpoDtCa :=‘‘
dCpoDtvenc:=‘‘
nCpoValo := 0
cmCpoDesc:=‘‘
oDlg:Refresh()

Return


User Function BtnAlter()

Local Ivsp:= 0

For Ivsp:= 1 To Len(aValores)
cCpoDire :=aValores[Ivsp,1]
cCpoNatu :=aValores[Ivsp,2]
cmCpoDesc :=aValores[Ivsp,3]
dCpoDtCa :=aValores[Ivsp,4]
dCpoDtvenc :=aValores[Ivsp,5]
nCpoValo :=aValores[Ivsp,6]
Next

Private cTitulo := " Alteração de Dados "

SetPrvt("oDlg","oSay1","oSay2","oSay3","oSay4","oSay5","oSay6","cCpoDire","cCpoNatu","dCpoDtCa","dCpoDtvenc")
SetPrvt("mCpoDesc","oGet1","oBtn1")

oDlg := MSDialog():New( 138,1569,485,2259,"Inclusão - Alteração",,,.F.,,,,,,.T.,,,.T. )
U_VSPTIT(cTitulo)
oSay1 := TSay():New( 036,008,{||"Diretor"},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
oSay2 := TSay():New( 056,008,{||"Natureza"},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
oSay3 := TSay():New( 076,008,{||"Data Cadastro"},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
oSay4 := TSay():New( 100,008,{||"Data Vencimento"},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
oSay5 := TSay():New( 120,008,{||"Valor"},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,050,010)
oSay6 := TSay():New( 076,144,{||"Descricao"},oDlg,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,032,008)

oCpoDire := TGet():New( 036,068,{|u| If(PCount()>0,cCpoDire:=u,cCpoDire)},oDlg,176,013,‘‘,,CLR_BLACK,CLR_WHITE,,,,.T.,"",,,.T.,.F.,,.F.,.F.,"","cCpoDire",,)
oCpoNatu := TGet():New( 056,068,{|u| If(PCount()>0,cCpoNatu:=u,cCpoNatu)},oDlg,065,013,‘‘,,CLR_BLACK,CLR_WHITE,,,,.T.,"",,,.T.,.F.,,.F.,.F.,"SED","cCpoNatu",,)
oCpoDtCa := TGet():New( 076,068,{|u| If(PCount()>0,dCpoDtCa:=u,dCpoDtCa)},oDlg,065,013,‘‘,,CLR_BLACK,CLR_WHITE,,,,.T.,"",,,.T.,.F.,,.F.,.F.,"","dCpoDtCa",,)
oCpoDtvenc := TGet():New( 100,068,{|u| If(PCount()>0,dCpoDtvenc:=u,dCpoDtvenc)},oDlg,065,013,‘‘,,CLR_BLACK,CLR_WHITE,,,,.T.,"",,,.T.,.F.,,.F.,.F.,"","dCpoDtvenc",,)
oCpoValo := TGet():New( 120,068,{|u| If(PCount()>0,nCpoValo:=u,nCpoValo)},oDlg,065,013,‘999,999,999.99‘,,CLR_BLACK,CLR_WHITE,,,,.T.,"",,,.F.,.F.,,.F.,.F.,"","nCpoValo",,)
oCpoDesc := TMultiGet():New( 088,144,{|u| If(PCount()>0,cmCpoDesc:=u,cmCpoDesc)},oDlg,188,044,,,CLR_BLACK,CLR_WHITE,,.T.,"",,,.F.,.F.,.F.,,,.F.,, )
oGet1 := TGet():New( 056,136,,oDlg,200,013,‘‘,,CLR_BLACK,CLR_HGRAY,,,,.T.,"",,,.T.,.F.,,.F.,.F.,"","",,)
oGet1:Disable()
oBtn1 := TButton():New( 004,260,"Incluir" ,oDlg,{||InseCpos()}, 40,10,,,.F.,.T.,.F.,,.F.,,,.F. )

oDlg:Activate(,,,.T.)

Return

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.100 segundos
Joomla templates by a4joomla