× Linguagem de Programação ADVPL

Perguntas Somar horas

Mais
9 anos 3 meses atrás #28866 por gustavo
Respondido por gustavo no tópico Somar horas
Willian obrigado pela resposta!!!

Sim criei 3 campos uma para o cara digitar as horas iniciais, as as horas finais e o total de horas com mesmos caracteres (5) e mascara (99:99), porém não estou conseguindo passar o valor a subtração dos resultados para os campos já tentei com gatilhos e até mesmo com funções mas não aparece valor.

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 3 meses atrás #28868 por will3698
Respondido por will3698 no tópico Somar horas
Posta ai o código que ta usando pra setar o field

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 3 meses atrás #28869 por gustavo
Respondido por gustavo no tópico Somar horas
//////////////////////////////////////////////////////////////////////////////////////////////
//+
+//
//| PROGRAMA | GfPdcEqp | AUTOR | GUSTAVO.RODRIGUES | DATA | 24/04/2015 |//
//+
+//
//| DESCRICAO | Funcao - GfPdcEqp() |//
//| | Fonte de produção do equipamento. |// |//
//|+
+//
//| MANUTENCAO DESDE SUA CRIACAO |//
//+
+//
//| DATA | AUTOR | DESCRICAO |//
//+
+//
//| / / | | |//
//+
+//
//| DATA | AUTOR | DESCRICAO |//
//+
+//
//| / / | | |//
//+
+//
//////////////////////////////////////////////////////////////////////////////////////////////

#include 'Protheus.ch'
#include 'Rwmake.ch'
#include 'TopConn.ch'

User Function GfPdcEqp() //Gestão de frotas Produção do Equipamento Browse.

cCadastro := 'Produção do Equipamento' // Título da tela mBrowse.

aRotina := {{'Pesquisar','AxPesqui',0,1},; // Rotinas disponíveis na mBrowse.
{'Visualizar','U_Mod2Inc()',0,2},;
{'Incluir','U_Mod2Inc()',0,3},;
{'Alterar','U_Mod2Inc()',0,4},;
{'Excluir','U_Mod2Inc()',0,5},;
{'Parâmetros','U_GFDtLib()',0,6},;
{'Teste','U_GfDtlcto()',0,7}}

DbSelectArea('ZAF') // Abertura de tabela.
DbSetOrder(1) // Posiciona no primeiro índice.

mBrowse(6,1,22,75,'ZAF',,,,,,) // Geração da Mbrowse.

// SetKey(VK_F12,{||U_GFDtLib()})

Return // Fim do programa.

User Function Mod2Inc(cAlias,nReg,nOpc)

Local oDlg,;
oGet,;
oTPanel1

Local aArea := GetArea(),;
nOpca := 0

// Cria váriável com formato dos campos criados no configurador, foi utilizada a função CriaVar para que os
// não gravem os dados anteriores das telas.

Private aHeader := {},;
aCols := {},;
aReg := {},;
aObj := {},;
aSize := MsAdvSize(.F.,.F.),;
aInfo := {},;
aPObj := {}

dDtInc := Date()
dDtLncto := CriaVar('ZAF_DTLCNT')

cTurno := CriaVar('ZAF_TURNO')
cUsrInc := cUserName

cVeiculo := CriaVar('ZAF_CODVEI')
cDescvei := CriaVar('ZAF_DSCVEI')
cCodApnt := CriaVar('ZAF_CODAPO')
cDescApnt := CriaVar('ZAF_DSCAPO')

cCodObra := CriaVar('ZAF_CODOBR')
cDescObr := CriaVar('ZAF_DESCOB')
cCodMot := CriaVar('ZAF_CODMOT')
cDescMot := CriaVar('ZAF_DSCMOT')

cDocument := CriaVar('ZAF_DOCUME')
cHriIni := CriaVar('ZAF_HRIINI')
cHoriFim := CriaVar('ZAF_HRIFIM')

cItem := CriaVar('ZAF_SEQUEN')
cCodSrv := CriaVar('ZAF_CODSRV')
cDscSrv := CriaVar('ZAF_DSCSRV')
/*cHraIni := CriaVar('ZAF_HRAINI')
cHraFim := CriaVar('ZAF_HRAFIM')
cHraTot := ElapTime(cHraIni,cHraFim)*/

// Posicionamento da tela.

AADD(aObj,{100,100,.T.,.T.})
AADD(aObj,{100,100,.T.,.T.})
AADD(aObj,{100,015,.T.,.F.})

// Ajuste no tamanho da tela.

aInfo := {aSize[1],aSize[2],aSize[3],aSize[4],3,3}
aPObj := MsObjSize(aInfo,aObj,.T.)
aPGet := MsObjGetPos((aSize[3] - aSize[1]),315,{{003,033,160,200,240,263}})

// Abre o alias ZAF

DbSelectArea('ZAF')
DbSetOrder(1)

// Inicia a montagem da tela modelo 2 pela MsDialog. A tela chama os componentes gerados pela função MsAdvSize,
// que determina o valor máximo da tela.

Define MsDialog oDlg Title cCadastro From aSize[7],aSize[1] To aSize[6],aSize[5] Of oMainWnd Pixel

// Cabeçalho da tela.

oTPanel1 := TPanel():New(0,0,,oDlg,NIL,.T.,.F.,NIL,NIL,0,62,.T.,.F.)
oTPanel1:Align := CONTROL_ALIGN_TOP

// Cria um objeto no painel com bordas.

oGroup := tGroup():New(02,02,60,690,,oTPanel1,,,.T.)

// Montagem das descrições e campos da tela.

@ 07,10 Say 'Usuário' Pixel Size 040,11 Of oTpanel1
@ 06,60 MsGet cUsrInc Size 045,09 Of oTPanel1 Pixel When .F.

@ 07,150 Say 'Data Inc' Pixel Size 040,15 Of oTpanel1
@ 06,200 MsGet dDtInc Size 042,09 Of oTPanel1 Pixel When .F.

@ 07,290 Say 'Lançamento' Pixel Size 37,11 Of oTpanel1
@ 06,340 MsGet dDtLncto Size 045,09 Of oTpanel1 Pixel

@ 07,440 Say 'Turno' Pixel Size 42,11 Of oTpanel1
@ 06,480 MSCOMBOBOX cTurno Items{'','D=Diurno','N=Noturno'} Size 040,80 Of oTpanel1 Pixel // Campo no formato combo.

@ 07,550 Say 'Veículo' Pixel Size 42,11 Of oTpanel1
@ 06,590 MsGet cVeiculo Size 042,09 Of oTpanel1 Pixel F3 'ZAC' // Consulta padrão na tabela de veículos.

@ 26,10 Say 'Desc Veículo' Pixel Size 45,11 of oTpanel1
@ 24,60 MsGet cDescVei Size 080,09 Of oTpanel1 Pixel When .F. // Condição para que o campo fique como bloqueado.

@ 26,150 Say 'Apontador' Pixel Size 42,11 Of oTpanel1
@ 25,200 MsGet cCodApnt Size 042,09 Of oTpanel1 Pixel F3 'SZF' // Consulta padrão na tabela de apontadores.

@ 26,290 Say 'Desc Apontador' Pixel Size 42,11 Of oTpanel1
@ 25,340 MsGet cCodApnt Size 080,09 Of oTpanel1 Pixel When .F.

@ 26,440 Say 'Obra' Pixel Size 46,11 Of oTpanel1
@ 25,480 MsGet cCodObra Size 042,09 Of oTpanel1 Pixel F3 'ZAA' // Consulta padrão na tabela de obras.

@ 26,550 Say 'Desc Obra' Pixel Size 42,11 Of oTpanel1
@ 22,590 MsGet cDescObr Size 080,09 Of oTpanel1 Pixel When .F.

@ 43,10 Say 'Motorista' Pixel Size 42,11 Of oTpanel1
@ 42,60 MsGet cCodMot Size 042,09 of oTpanel1 Pixel F3 'DA4' // Consulta padão no cadastro de motorista.

@ 43,150 Say 'Desc Motorista' Pixel Size 42,11 Of oTpanel1
@ 42,200 MsGet cDescMot Size 080,09 Of oTpanel1 Pixel When .F.

@ 43,290 Say 'Hori Inicial' Pixel Size 42,11 Of oTpanel1
@ 42,340 MsGet cHriIni Size 042,09 Of oTpanel1 Pixel

@ 43,440 Say 'Hori Final' Pixel Size 42,11 Of oTpanel1
@ 42,480 MsGet cHoriFim Size 042,09 Of oTpanel1 Pixel

@ 43,550 Say 'Documento' pixel Size 42,11 Of oTpanel1
@ 42,590 MsGet cDocument Size 042,09 Of oTpanel1 Pixel

// Abre a tabela SX3 no primeiro índice e posiciona na tabela ZAF.

DbSelectArea("SX3")
DbSetOrder(1)
DbSeek('ZAF')

// Todos os campos que estão marcados como usado (configurador) e os coloca no alcols da tela.

nUsado := 0
aHeader := {}

/* AADD(aHeader,{'Item','ZAF_SEQUEN','999',5,0,'AllwaysTrue()', '','C','','R'})
AADD(aHeader,{'Cod Serv','ZAF_CODSRV','999',10,0,'AllwaysTrue()', '','C','','R'})
AADD(aHeader,{'Desc Serv','ZAF_DSCSRV','@!',20,0,'AllwaysTrue()', '','C','','R'})
AADD(aHeader,{'Hra Inicial','ZAF_HRAINI','99:99:99',11,0,'AllwaysTrue()', '','C','','R'})
AADD(aHeader,{'Hra Final','ZAF_HRAFIM','99:99:99',11,0,'AllwaysTrue()', '','C','','R'})
AADD(aHeader,{'Total Hrs','ZAF_HRATOT','99:99:99',11,0,'AllwaysTrue()', '','C','','R'})*/

While !Eof().And.(x3_arquivo == "ZAF")
IF X3USO(X3_USADO) .And. cNivel >= X3_NIVEL
nUsado:= nUsado+1
AADD(aHeader,{TRIM(X3_TITULO),X3_CAMPO,;
X3_PICTURE,;
X3_TAMANHO,;
X3_DECIMAL,;
"AllWaysTrue()",; // Validação da linha do aCols.
X3_USADO,;
X3_TIPO,;
X3_ARQUIVO,;
X3_VLDUSER,;
X3_CONTEXT})
Endif
DbSkip()
EndDo


// Montagem do aCols.

oGet:= MsGetDados():New(aPObj[2,1],aPObj[2,2],aPObj[2,3],aPObj[2,4],3,'AllWaysTrue()',,"+ZAF_SEQUEN",.T.)
oGet:oBrowse:Align := CONTROL_ALIGN_ALLCLIENT

// Ativa a tela. A função EnchoiceBar chama os campos padões da tela.

Activate MsDialog oDlg Center On Init EnchoiceBar(oDlg,{||(TstGrvGF(cCodMot,cDescMot,dDtInc,dDtLncto,cTurno,cUsrInc,cVeiculo,cDescvei,cCodApnt,cDescApnt,cCodObra,cDescObr,cDocument,cHriIni,cHoriFim,nOpc),(oDlg:End()))},{||oDlg:End()})

Return

/*
*/

//////////////////////////////////////////////////////////////////////////////////////////////
//+
+//
//| DATA | AUTOR | DESCRICAO |//
//+
+//
//|25/04/2015| GUSTAVO.RODRIGUES | Grava os dados da tela. |//
//+
+//
//////////////////////////////////////////////////////////////////////////////////////////////

Static Function TstGrvGF(cCodMot,cDescMot,dDtInc,dDtLncto,cTurno,cUsrInc,cVeiculo,cDescvei,cCodApnt,cDescApnt,cCodObra,cDescObr,cDocument,cHriIni,cHoriFim,nOpc)

Local cPar01 := GetMv('MV_XDTADE')
Local cPar02 := GetMv('MV_XDTATE')

If cPar01 > dDtLncto .Or. cPar02 < dDtLncto
For i := 0 To 1 Step 1
Aviso('Erro data de lancto','O campo "Lançamento" está com a data menor do que a data do parâmetro "Dê" ('+ GetMv('MV_XDTADE')+ ') ou maior do que a data informada pelo parâmetro "Até" (' + GetMv('MV_XDTATE') + ').' ,{'Voltar'},1)
Next i
EndIf

DbSelectArea('ZAF') // Abre a tabela.
ZAF->(DbSetOrder(1)) // Posiciona pelo indice.
ZAF->(DbGoBottom()) // Posiciona no último registro.

While !EOF()
If nOpca == 3 .Or. nOpca == 4
If !(DbSeek(xFilial('ZAF')+ cDocument))
Begin Transaction
RecLock('ZAF',.T.) // Gravação de um novo arquivo.
For nI:= 1 To Len(aCols)
If !aCOLS[nI,Len(aHeader)+1] // Não conssidera linhas deletadas.

// Grava todos os campos do cabeçalho.

ZAF->ZAF_DTINC := dDtInc
ZAF->ZAF_DTLCNT := dDtLncto
ZAF->ZAF_TURNO := cTurno
ZAF->ZAF_USRINC := cUsrInc
ZAF->ZAF_CODVEI := cVeiculo
ZAF->ZAF_DSCVEI := cDescvei
ZAF->ZAF_CODAPO := cCodApnt
ZAF->ZAF_DSCAPO := cDescApnt
ZAF ->ZAF_CODOBR := cCodObra
ZAF->ZAF_DESCOB := cDescObr
ZAF->ZAF_CODMOT := cCodMot
ZAF->ZAF_DSCMOT := cDescMot
ZAF->ZAF_DOCUME := cDocument

// Gravação do aCols.

For nX:= 1 To Len(aHeader)
FieldPut(FieldPos(aHeader[nX,2]),aCOLS[nI,nX])
Next nX
ZAF->(MsUnLock()) // Trava a tabela.
EndIf
Next nI
End Transaction

Else

Begin Transaction

RecLock('ZAF',.F.) // Gravação de um novo arquivo.

For nI:= 1 To Len(aCols)
If !aCOLS[nI,Len(aHeader)+1] // Não conssidera linhas deletadas.

// Grava todos os campos do cabeçalho.

ZAF->ZAF_DTINC := dDtInc
ZAF->ZAF_DTLCNT := dDtLncto
ZAF->ZAF_TURNO := cTurno
ZAF->ZAF_USRINC := cUsrInc
ZAF->ZAF_CODVEI := cVeiculo
ZAF->ZAF_DSCVEI := cDescvei
ZAF->ZAF_CODAPO := cCodApnt
ZAF->ZAF_DSCAPO := cDescApnt
ZAF ->ZAF_CODOBR := cCodObra
ZAF->ZAF_DESCOB := cDescObr
ZAF->ZAF_CODMOT := cCodMot
ZAF->ZAF_DSCMOT := cDescMot

// Gravação do aCols.

For nX:= 1 To Len(aHeader)
FieldPut(FieldPos(aHeader[nX,2]),aCOLS[nI,nX])
Next nX
ZAF->(MsUnLock()) // Trava a tabela.
EndIf
Next nI
End Transaction
EndIf

ElseIf nOpc == 5

DbSelectArea('ZAF')
DbSetOrder(1)

If dbSeek(xFilial('ZAF')+ cDocument)

RecLock('ZAF',.F.,.T.)
DbDelete()
ZAF->(MsUnlock())

EndIf

Else

DbSelectArea('ZAF')
DbSetOrder(1)

If dbSeek(xFilial()+ cDocument )

RecLock('ZAF',.F.,.T.)
DbDelete()
ZAF->(MsUnlock())

Endif
EndIf

DbSelectArea('ZAF')
DbSkip
EndDo

Return

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 3 meses atrás #28875 por will3698
Respondido por will3698 no tópico Somar horas
Olha, não vou dizer que analisei todo seu código de ponta a ponta , mas pelo que vi rapidão aqui, não encontrei a passagem da cHriIni e cHoriFim em nenhuma momento na sua ReckLock. na gravação do cabeçalho, não vi você passando essas variaveis .

tem como me mostrar no código exatamente onde vc passa a variavel do msdialog pro Recklock ?

att

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 3 meses atrás #28877 por gustavo
Respondido por gustavo no tópico Somar horas
Willian,

Eu chamo os meus campos direto nessa parte:

While !Eof().And.(x3_arquivo == "ZAF")
IF X3USO(X3_USADO) .And. cNivel >= X3_NIVEL
nUsado:= nUsado+1
AADD(aHeader,{TRIM(X3_TITULO),X3_CAMPO,;
X3_PICTURE,;
X3_TAMANHO,;
X3_DECIMAL,;
"AllWaysTrue()",; // Validação da linha do aCols.
X3_USADO,;
X3_TIPO,;
X3_ARQUIVO,;
X3_VLDUSER,;
X3_CONTEXT})
Endif
DbSkip()
EndDo


já eles vão ficar na Msget, chamei eles direto do SX3. EU gravos eles nessa parte:

For nX:= 1 To Len(aHeader)
FieldPut(FieldPos(aHeader[nX,2]),aCOLS[nI,nX])
Next nX
ZAF->(MsUnLock()) // Trava a tabela.
EndIf
Next nI
End Transaction

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 3 meses atrás #28882 por will3698
Respondido por will3698 no tópico Somar horas
Testa ai Brother !
Como não tenho essa tabela aqui, não consigo debugar, mas acho que vai funciona.




#include 'Protheus.ch'
#include 'Rwmake.ch'
#include 'TopConn.ch'

User Function GfPdcEqp() //Gestão de frotas Produção do Equipamento Browse.

cCadastro := 'Produção do Equipamento' // Título da tela mBrowse.

aRotina := {{'Pesquisar','AxPesqui',0,1},; // Rotinas disponíveis na mBrowse.
{'Visualizar','U_Mod2Inc()',0,2},;
{'Incluir','U_Mod2Inc()',0,3},;
{'Alterar','U_Mod2Inc()',0,4},;
{'Excluir','U_Mod2Inc()',0,5},;
{'Parâmetros','U_GFDtLib()',0,6},;
{'Teste','U_GfDtlcto()',0,7}}

DbSelectArea('ZAF') // Abertura de tabela.
DbSetOrder(1) // Posiciona no primeiro índice.

mBrowse(6,1,22,75,'ZAF',,,,,,) // Geração da Mbrowse.

// SetKey(VK_F12,{||U_GFDtLib()})

Return // Fim do programa.

User Function Mod2Inc(cAlias,nReg,nOpc)

Local oDlg,;
oGet,;
oTPanel1

Local aArea := GetArea(),;
nOpca := 0

// Cria váriável com formato dos campos criados no configurador, foi utilizada a função CriaVar para que os // não gravem os dados anteriores das telas.

Private aHeader := {},;
aCols := {},;
aReg := {},;
aObj := {},;
aSize := MsAdvSize(.F.,.F.),;
aInfo := {},;
aPObj := {}

dDtInc := Date()
dDtLncto := CriaVar('ZAF_DTLCNT')

cTurno := CriaVar('ZAF_TURNO')
cUsrInc := cUserName

cVeiculo := CriaVar('ZAF_CODVEI')
cDescvei := CriaVar('ZAF_DSCVEI')
cCodApnt := CriaVar('ZAF_CODAPO')
cDescApnt := CriaVar('ZAF_DSCAPO')

cCodObra := CriaVar('ZAF_CODOBR')
cDescObr := CriaVar('ZAF_DESCOB')
cCodMot := CriaVar('ZAF_CODMOT')
cDescMot := CriaVar('ZAF_DSCMOT')

cDocument := CriaVar('ZAF_DOCUME')
cHriIni := CriaVar('ZAF_HRIINI')
cHoriFim := CriaVar('ZAF_HRIFIM')

cItem := CriaVar('ZAF_SEQUEN')
cCodSrv := CriaVar('ZAF_CODSRV')
cDscSrv := CriaVar('ZAF_DSCSRV')
/*cHraIni := CriaVar('ZAF_HRAINI')
cHraFim := CriaVar('ZAF_HRAFIM')
cHraTot := ElapTime(cHraIni,cHraFim)*/

// Posicionamento da tela.

AADD(aObj,{100,100,.T.,.T.})
AADD(aObj,{100,100,.T.,.T.})
AADD(aObj,{100,015,.T.,.F.})

// Ajuste no tamanho da tela.

aInfo := {aSize[1],aSize[2],aSize[3],aSize[4],3,3}
aPObj := MsObjSize(aInfo,aObj,.T.)
aPGet := MsObjGetPos((aSize[3] - aSize[1]),315,{{003,033,160,200,240,263}})

// Abre o alias ZAF

DbSelectArea('ZAF')
DbSetOrder(1)

// Inicia a montagem da tela modelo 2 pela MsDialog. A tela chama os componentes gerados pela função MsAdvSize, // que determina o valor máximo da tela.

Define MsDialog oDlg Title cCadastro From aSize[7],aSize[1] To aSize[6],aSize[5] Of oMainWnd Pixel

// Cabeçalho da tela.

oTPanel1 := TPanel():New(0,0,,oDlg,NIL,.T.,.F.,NIL,NIL,0,62,.T.,.F.)
oTPanel1:Align := CONTROL_ALIGN_TOP

// Cria um objeto no painel com bordas.

oGroup := tGroup():New(02,02,60,690,,oTPanel1,,,.T.)

// Montagem das descrições e campos da tela.

@ 07,10 Say 'Usuário' Pixel Size 040,11 Of oTpanel1 @ 06,60 MsGet cUsrInc Size 045,09 Of oTPanel1 Pixel When .F.

@ 07,150 Say 'Data Inc' Pixel Size 040,15 Of oTpanel1 @ 06,200 MsGet dDtInc Size 042,09 Of oTPanel1 Pixel When .F.

@ 07,290 Say 'Lançamento' Pixel Size 37,11 Of oTpanel1 @ 06,340 MsGet dDtLncto Size 045,09 Of oTpanel1 Pixel

@ 07,440 Say 'Turno' Pixel Size 42,11 Of oTpanel1 @ 06,480 MSCOMBOBOX cTurno Items{'','D=Diurno','N=Noturno'} Size 040,80 Of oTpanel1 Pixel // Campo no formato combo.

@ 07,550 Say 'Veículo' Pixel Size 42,11 Of oTpanel1 @ 06,590 MsGet cVeiculo Size 042,09 Of oTpanel1 Pixel F3 'ZAC' // Consulta padrão na tabela de veículos.

@ 26,10 Say 'Desc Veículo' Pixel Size 45,11 of oTpanel1 @ 24,60 MsGet cDescVei Size 080,09 Of oTpanel1 Pixel When .F. // Condição para que o campo fique como bloqueado.

@ 26,150 Say 'Apontador' Pixel Size 42,11 Of oTpanel1 @ 25,200 MsGet cCodApnt Size 042,09 Of oTpanel1 Pixel F3 'SZF' // Consulta padrão na tabela de apontadores.

@ 26,290 Say 'Desc Apontador' Pixel Size 42,11 Of oTpanel1 @ 25,340 MsGet cCodApnt Size 080,09 Of oTpanel1 Pixel When .F.

@ 26,440 Say 'Obra' Pixel Size 46,11 Of oTpanel1 @ 25,480 MsGet cCodObra Size 042,09 Of oTpanel1 Pixel F3 'ZAA' // Consulta padrão na tabela de obras.

@ 26,550 Say 'Desc Obra' Pixel Size 42,11 Of oTpanel1 @ 22,590 MsGet cDescObr Size 080,09 Of oTpanel1 Pixel When .F.

@ 43,10 Say 'Motorista' Pixel Size 42,11 Of oTpanel1 @ 42,60 MsGet cCodMot Size 042,09 of oTpanel1 Pixel F3 'DA4' // Consulta padão no cadastro de motorista.

@ 43,150 Say 'Desc Motorista' Pixel Size 42,11 Of oTpanel1 @ 42,200 MsGet cDescMot Size 080,09 Of oTpanel1 Pixel When .F.

@ 43,290 Say 'Hori Inicial' Pixel Size 42,11 Of oTpanel1 @ 42,340 MsGet cHriIni Size 042,09 Of oTpanel1 Pixel

@ 43,440 Say 'Hori Final' Pixel Size 42,11 Of oTpanel1 @ 42,480 MsGet cHoriFim Size 042,09 Of oTpanel1 Pixel

@ 43,550 Say 'Documento' pixel Size 42,11 Of oTpanel1 @ 42,590 MsGet cDocument Size 042,09 Of oTpanel1 Pixel

// Abre a tabela SX3 no primeiro índice e posiciona na tabela ZAF.

DbSelectArea("SX3")
DbSetOrder(1)
DbSeek('ZAF')

// Todos os campos que estão marcados como usado (configurador) e os coloca no alcols da tela.

nUsado := 0
aHeader := {}

/* AADD(aHeader,{'Item','ZAF_SEQUEN','999',5,0,'AllwaysTrue()', '','C','','R'}) AADD(aHeader,{'Cod Serv','ZAF_CODSRV','999',10,0,'AllwaysTrue()', '','C','','R'}) AADD(aHeader,{'Desc Serv','ZAF_DSCSRV','@!',20,0,'AllwaysTrue()', '','C','','R'}) AADD(aHeader,{'Hra Inicial','ZAF_HRAINI','99:99:99',11,0,'AllwaysTrue()', '','C','','R'}) AADD(aHeader,{'Hra Final','ZAF_HRAFIM','99:99:99',11,0,'AllwaysTrue()', '','C','','R'}) AADD(aHeader,{'Total Hrs','ZAF_HRATOT','99:99:99',11,0,'AllwaysTrue()', '','C','','R'})*/

While !Eof().And.(x3_arquivo == "ZAF")
IF X3USO(X3_USADO) .And. cNivel >= X3_NIVEL nUsado:= nUsado+1 AADD(aHeader,{TRIM(X3_TITULO),X3_CAMPO,;
X3_PICTURE,;
X3_TAMANHO,;
X3_DECIMAL,;
"AllWaysTrue()",; // Validação da linha do aCols.
X3_USADO,;
X3_TIPO,;
X3_ARQUIVO,;
X3_VLDUSER,;
X3_CONTEXT})
Endif
DbSkip()
EndDo

// Montagem do aCols.

oGet:= MsGetDados():New(aPObj[2,1],aPObj[2,2],aPObj[2,3],aPObj[2,4],3,'AllWaysTrue()',,"+ZAF_SEQUEN",.T.)
oGet:oBrowse:Align := CONTROL_ALIGN_ALLCLIENT

// Ativa a tela. A função EnchoiceBar chama os campos padões da tela.

Activate MsDialog oDlg Center On Init EnchoiceBar(oDlg,{||(TstGrvGF(cCodMot,cDescMot,dDtInc,dDtLncto,cTurno,cUsrInc,cVeiculo,cDescvei,cCodApnt,cDescApnt,cCodObra,cDescObr,cDocument,cHriIni,cHoriFim,nOpc),(oDlg:End()))},{||oDlg:End()})

Return

/*
*/

//////////////////////////////////////////////////////////////////////////////////////////////
//+
+//
//| DATA | AUTOR | DESCRICAO |//
//+
+//
//|25/04/2015| GUSTAVO.RODRIGUES | Grava os dados da tela. |// //+
+//
//////////////////////////////////////////////////////////////////////////////////////////////

Static Function TstGrvGF(cCodMot,cDescMot,dDtInc,dDtLncto,cTurno,cUsrInc,cVeiculo,cDescvei,cCodApnt,cDescApnt,cCodObra,cDescObr,cDocument,cHriIni,cHoriFim,nOpc)

Local cPar01 := GetMv('MV_XDTADE')
Local cPar02 := GetMv('MV_XDTATE')

If cPar01 > dDtLncto .Or. cPar02 < dDtLncto For i := 0 To 1 Step 1 Aviso('Erro data de lancto','O campo "Lançamento" está com a data menor do que a data do parâmetro "Dê" ('+ GetMv('MV_XDTADE')+ ') ou maior do que a data informada pelo parâmetro "Até" (' + GetMv('MV_XDTATE') + ').' ,{'Voltar'},1) Next i EndIf

DbSelectArea('ZAF') // Abre a tabela.
ZAF->(DbSetOrder(1)) // Posiciona pelo indice.
ZAF->(DbGoBottom()) // Posiciona no último registro.

While !EOF()
If nOpca == 3 .Or. nOpca == 4
If !(DbSeek(xFilial('ZAF')+ cDocument))
Begin Transaction
RecLock('ZAF',.T.) // Gravação de um novo arquivo.
For nI:= 1 To Len(aCols)
If !aCOLS[nI,Len(aHeader)+1] // Não conssidera linhas deletadas.

// Grava todos os campos do cabeçalho.

ZAF->ZAF_DTINC := dDtInc
ZAF->ZAF_DTLCNT := dDtLncto
ZAF->ZAF_TURNO := cTurno
ZAF->ZAF_USRINC := cUsrInc
ZAF->ZAF_CODVEI := cVeiculo
ZAF->ZAF_DSCVEI := cDescvei
ZAF->ZAF_CODAPO := cCodApnt
ZAF->ZAF_DSCAPO := cDescApnt
ZAF->ZAF_CODOBR := cCodObra
ZAF->ZAF_DESCOB := cDescObr
ZAF->ZAF_CODMOT := cCodMot
ZAF->ZAF_DSCMOT := cDescMot
ZAF->ZAF_DOCUME := cDocument
ZAF->ZAF_HRIINI := cHriIni
ZAF->ZAF_HRIFIM := cHoriFim

// Gravação do aCols.

For nX:= 1 To Len(aHeader)
FieldPut(FieldPos(aHeader[nX,2]),aCOLS[nI,nX])
Next nX
ZAF->(MsUnLock()) // Trava a tabela.
EndIf
Next nI
End Transaction

Else

Begin Transaction

RecLock('ZAF',.F.) // Gravação de um novo arquivo.

For nI:= 1 To Len(aCols)
If !aCOLS[nI,Len(aHeader)+1] // Não conssidera linhas deletadas.

// Grava todos os campos do cabeçalho.

ZAF->ZAF_DTINC := dDtInc
ZAF->ZAF_DTLCNT := dDtLncto
ZAF->ZAF_TURNO := cTurno
ZAF->ZAF_USRINC := cUsrInc
ZAF->ZAF_CODVEI := cVeiculo
ZAF->ZAF_DSCVEI := cDescvei
ZAF->ZAF_CODAPO := cCodApnt
ZAF->ZAF_DSCAPO := cDescApnt
ZAF ->ZAF_CODOBR := cCodObra
ZAF->ZAF_DESCOB := cDescObr
ZAF->ZAF_CODMOT := cCodMot
ZAF->ZAF_DSCMOT := cDescMot
ZAF->ZAF_HRIINI := cHriIni
ZAF->ZAF_HRIFIM := cHoriFim

// Gravação do aCols.

For nX:= 1 To Len(aHeader)
FieldPut(FieldPos(aHeader[nX,2]),aCOLS[nI,nX])
Next nX
ZAF->(MsUnLock()) // Trava a tabela.
EndIf
Next nI
End Transaction
EndIf

ElseIf nOpc == 5

DbSelectArea('ZAF')
DbSetOrder(1)

If dbSeek(xFilial('ZAF')+ cDocument)

RecLock('ZAF',.F.,.T.)
DbDelete()
ZAF->(MsUnlock())

EndIf

Else

DbSelectArea('ZAF')
DbSetOrder(1)

If dbSeek(xFilial()+ cDocument )

RecLock('ZAF',.F.,.T.)
DbDelete()
ZAF->(MsUnlock())

Endif
EndIf

DbSelectArea('ZAF')
DbSkip
EndDo

Return

Por favor Acessar ou Registrar para participar da conversa.

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