×
Linguagem de Programação ADVPL
Perguntas Somar horas
- gustavo
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 70
- Obrigados Recebidos: 0
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.
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.
- will3698
- Desconectado
- Membro Dourado
Menos
Mais
- Postagens: 310
- Obrigados Recebidos: 1
- gustavo
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 70
- Obrigados Recebidos: 0
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
//+
+//
//| 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.
- will3698
- Desconectado
- Membro Dourado
Menos
Mais
- Postagens: 310
- Obrigados Recebidos: 1
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
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.
- gustavo
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 70
- Obrigados Recebidos: 0
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
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.
- will3698
- Desconectado
- Membro Dourado
Menos
Mais
- Postagens: 310
- Obrigados Recebidos: 1
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
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