×
Linguagem de Programação ADVPL
Perguntas Tela modelo 2
- Rei da TI
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 81
- Obrigados Recebidos: 0
10 anos 11 meses atrás #19699
por Rei da TI
Tela modelo 2 foi criado por Rei da TI
Boa tarde
Galera, seguinte, estou com uma dificuldade em fazer uma tela modelo 2, tenho ela quase pronta, mais gostaria da ajuda de voces....queria algo do tipo igual a tela de pedido de venda , onde tenho duas tabelas, na minha primeira tabela teria apenas um codigo e uma data, na segunda alguns itens que farão parte da primeira tabela.
o fonte abaixo , gostaria de saber como faço a gravação nas tabelas e tambem como visualizar e alterar ela.
Segue o que tenho ate agora... HELPPP PLIS..
#INCLUDE "rwmake.ch"
#INCLUDE "protheus.ch"
#INCLUDE "topconn.ch"
/**********************************************************************************************************************************/
/** user function **/
/** **/
/**********************************************************************************************************************************/
/** Parâmetro | Tipo | Tamanho | Descrição **/
/**********************************************************************************************************************************/
/** Nenhum parametro esperado neste procedimento **/
/**********************************************************************************************************************************/
user function R1312001
// titulo
private cCadastro := "Monitoramento de Janelas"
// alias
Private cAlias1 :="ZR8"
// menus
private aRotina := {}
// cor das legendas
private aCores := {}
//Adicinando Menus
AADD(aRotina,{"Pesquisar" ,"AxPesqui",0,1})
AADD(aRotina,{"Visualizar" ,"AxVisual",0,2})
AADD(aRotina,{"Incluir" ,"U_R1312002",0,3})
AADD(aRotina,{"Alterar" ,"U_R1312002",0,4})
AADD(aRotina,{"Excluir" ,"AxDeleta",0,5})
// monta o browse
MBrowse( nil, nil, nil, nil, cAlias1,,,,,, aCores )
return
#INCLUDE "rwmake.ch"
#INCLUDE "protheus.ch"
#INCLUDE "topconn.ch"
/**********************************************************************************************************************************/
/** user function **/
/** **/
/**********************************************************************************************************************************/
/** Parâmetro | Tipo | Tamanho | Descrição **/
/**********************************************************************************************************************************/
/** Nenhum parametro esperado neste procedimento **/
/**********************************************************************************************************************************/
User Function R1312002(cAlias,nReg,nOpc)
Local aArea := GetArea()
Local aCpos1 := {"ZR7_DATA","ZR7_JANELA","ZR7_DOCA","ZR7_CHEGAD","ZR7_POSINI","ZR7_POSFIN","ZR7_DESINI","ZR7_DESFIN","ZR7_SAIDA",}
Local aCpos2 := {"ZR8_DATA","ZR8_QUANT"}
Local aPosObj := {}
Local aObjects := {}
Local aSize := {}
Local aPosGet := {}
Local aInfo := {}
Local lContinua := .T.
Local lGrade := MaGrade()
Local lQuery := .F.
Local lFreeze := .F.
Local nGetLin := 0
Local nOpcA := 0
Local nI := 0
Local nColFreeze := 1
Local cArqQry := "ZR8"
Local cCadastro := OemToAnsi("Cadastro de Recebimento")
Local lRet := .T.
Local bOk := {|| lRet := .T.,oDlg:END()}
Local bCancel := {|| lRet := .F.,oDlg:END()}
Local oGetd
Local oDlg
Local bCond := {|| .T. }
Local bAction1 := {|| .T. }
Local bAction2 := {|| .T. }
Local cSeek := ""
Local aNoFields := {"ZR7_STATUS"} // Campos que nao devem entrar no aHeader e aCols
Local bWhile := {|| }
Local cQuery := ""
// Inicializa a Variaveis Privates.
PRIVATE aTrocaF3 := {}
PRIVATE aTELA[0][0],aGETS[0]
PRIVATE aHeader := {}
PRIVATE aCols := {}
PRIVATE aHeadFor := {}
PRIVATE aColsFor := {}
PRIVATE N := 1
//Inclui := .F.
//Altera := .F.
// Inicializa a Variaveis da Enchoice.
RegToMemory( "ZR8", Inclui, .T. )
// Filtros para montagem do aCols
dbSelectArea("ZR7")
ZR7->( dbSetOrder(1) )
#IFDEF TOP
lQuery := .T.
cQuery := "SELECT * "
cQuery += "FROM "+RetSqlName("ZR7")+" ZR7 "
cQuery += "WHERE ZR7.ZR7_FILIAL='"+xFilial("ZR7")+"' AND "
cQuery += "ZR7.ZR7_COD='"+ZR8->ZR8_COD+"' AND "
cQuery += "ZR7.D_E_L_E_T_<>'*' "
cQuery += "ORDER BY "+SqlOrder(ZR7->(IndexKey()))
#ENDIF
ZR7->( DbCloseArea() )
cSeek := xFilial("ZR7")+ZR8->ZR8_COD
bWhile := {|| ZR7_FILIAL+ZR7_COD }
// Montagem do aHeader e aCols
FillGetDados(nOPc,"ZR7",1,cSeek,bWhile,{{bCond,bAction1,bAction2}},aNoFields,/*aYesFields*/,/*lOnlyYes*/,;
cQuery,/*bMontCols*/,.T.,/*aHeaderAux*/,/*aColsAux*/,/*bafterCols*/,/*bBeforeCols*/,/*bAfterHeader*/,"ZR7")
If lQuery
dbSelectArea("ZR7")
dbCloseArea()
ChkFile("ZR7",.F.)
EndIf
// Caso nao ache nenhum item , abandona rotina.
If ( Len(aCols) == 0 )
ApMsgAlert("Não achou os itens")
lContinua := .F.
EndIf
If ( lContinua )
// Faz o calculo automatico de dimensoes de objetos
aSize := MsAdvSize()
aObjects := {}
AAdd( aObjects, { 100, 40, .t., .f. } ) //primeiro numero é horizontal, 2º vertical, os proximos informan se pode ser alterado ou não f = pode
AAdd( aObjects, { 100, 100, .t., .t. } )
AAdd( aObjects, { 100, 020, .t., .f. } )
aInfo := { aSize[ 1 ], aSize[ 2 ], aSize[ 3 ], aSize[ 4 ], 3, 3 }
aPosObj := MsObjSize( aInfo, aObjects )
aPosGet := MsObjGetPos(aSize[3]-aSize[1],315, {{003,033,160,200,240,263}} )
DEFINE MSDIALOG oDlg TITLE cCadastro From aSize[7],0 to aSize[6],aSize[5] of oMainWnd PIXEL
EnChoice( cAlias, nReg, nOpc, , , , , aPosObj[1],aCpos2,3)
oGetd := MsGetDados():New(aPosObj[2,1],aPosObj[2,2],aPosObj[2,3],aPosObj[2,4],nOpc,,,"",,aCpos1,nColFreeze,,,,,,,,lFreeze)
//ACTIVATE MSDIALOG oDlg ON INIT EnchoiceBar(oDlg, {||oDlg:End()},{||oDlg:End()})
ACTIVATE MSDIALOG oDlg On Init (EnchoiceBar(oDlg,bOk,bCancel))
IF lRet
Gravar()
ENDIF
EndIf
Return
Static function gravar()
//gravando na tabela
RecLock("ZR8",.T.)
ZR8->ZR8_FILIAL :=xFilial("ZR8")
ZR8->ZR8_DATA := M->ZR8_DATA
ZR8->ZR8_QUANT := M->ZR8_QUANT
ZR8->(MsUnlock())
//gravando na tabela
RecLock("ZR7",.T.)
ZR7->ZR7_FILIAL :=xFilial("ZR7")
ZR7->ZR7_DATA := M->ZR7_DATA
ZR7->ZR7_JANELA := M->ZR7_JANELA
ZR7->ZR7_DOCA := M->ZR7_DOCA
ZR7->ZR7_CHEGAD := M->ZR7_CHEGAD
ZR7->ZR7_POSINI := M->ZR7_POSINI
ZR7->ZR7_POSFIN := M->ZR7_POSFIN
ZR7->ZR7_DESINI := M->ZR7_DESINI
ZR7->ZR7_DESFIN := M->ZR7_DESFIN
ZR7->ZR7_SAIDA := M->ZR7_SAIDA
ZR7->ZR7_MOTORI := M->ZR7_MOTORI
ZR7->ZR7_PLACA := M->ZR7_PLACA
ZR7->ZR7_NUMCOM := M->ZR7_NUMCOM
//ZR7->ZR7_STATUS
ZR7->(MsUnlock())
Return
Galera, seguinte, estou com uma dificuldade em fazer uma tela modelo 2, tenho ela quase pronta, mais gostaria da ajuda de voces....queria algo do tipo igual a tela de pedido de venda , onde tenho duas tabelas, na minha primeira tabela teria apenas um codigo e uma data, na segunda alguns itens que farão parte da primeira tabela.
o fonte abaixo , gostaria de saber como faço a gravação nas tabelas e tambem como visualizar e alterar ela.
Segue o que tenho ate agora... HELPPP PLIS..
#INCLUDE "rwmake.ch"
#INCLUDE "protheus.ch"
#INCLUDE "topconn.ch"
/**********************************************************************************************************************************/
/** user function **/
/** **/
/**********************************************************************************************************************************/
/** Parâmetro | Tipo | Tamanho | Descrição **/
/**********************************************************************************************************************************/
/** Nenhum parametro esperado neste procedimento **/
/**********************************************************************************************************************************/
user function R1312001
// titulo
private cCadastro := "Monitoramento de Janelas"
// alias
Private cAlias1 :="ZR8"
// menus
private aRotina := {}
// cor das legendas
private aCores := {}
//Adicinando Menus
AADD(aRotina,{"Pesquisar" ,"AxPesqui",0,1})
AADD(aRotina,{"Visualizar" ,"AxVisual",0,2})
AADD(aRotina,{"Incluir" ,"U_R1312002",0,3})
AADD(aRotina,{"Alterar" ,"U_R1312002",0,4})
AADD(aRotina,{"Excluir" ,"AxDeleta",0,5})
// monta o browse
MBrowse( nil, nil, nil, nil, cAlias1,,,,,, aCores )
return
#INCLUDE "rwmake.ch"
#INCLUDE "protheus.ch"
#INCLUDE "topconn.ch"
/**********************************************************************************************************************************/
/** user function **/
/** **/
/**********************************************************************************************************************************/
/** Parâmetro | Tipo | Tamanho | Descrição **/
/**********************************************************************************************************************************/
/** Nenhum parametro esperado neste procedimento **/
/**********************************************************************************************************************************/
User Function R1312002(cAlias,nReg,nOpc)
Local aArea := GetArea()
Local aCpos1 := {"ZR7_DATA","ZR7_JANELA","ZR7_DOCA","ZR7_CHEGAD","ZR7_POSINI","ZR7_POSFIN","ZR7_DESINI","ZR7_DESFIN","ZR7_SAIDA",}
Local aCpos2 := {"ZR8_DATA","ZR8_QUANT"}
Local aPosObj := {}
Local aObjects := {}
Local aSize := {}
Local aPosGet := {}
Local aInfo := {}
Local lContinua := .T.
Local lGrade := MaGrade()
Local lQuery := .F.
Local lFreeze := .F.
Local nGetLin := 0
Local nOpcA := 0
Local nI := 0
Local nColFreeze := 1
Local cArqQry := "ZR8"
Local cCadastro := OemToAnsi("Cadastro de Recebimento")
Local lRet := .T.
Local bOk := {|| lRet := .T.,oDlg:END()}
Local bCancel := {|| lRet := .F.,oDlg:END()}
Local oGetd
Local oDlg
Local bCond := {|| .T. }
Local bAction1 := {|| .T. }
Local bAction2 := {|| .T. }
Local cSeek := ""
Local aNoFields := {"ZR7_STATUS"} // Campos que nao devem entrar no aHeader e aCols
Local bWhile := {|| }
Local cQuery := ""
// Inicializa a Variaveis Privates.
PRIVATE aTrocaF3 := {}
PRIVATE aTELA[0][0],aGETS[0]
PRIVATE aHeader := {}
PRIVATE aCols := {}
PRIVATE aHeadFor := {}
PRIVATE aColsFor := {}
PRIVATE N := 1
//Inclui := .F.
//Altera := .F.
// Inicializa a Variaveis da Enchoice.
RegToMemory( "ZR8", Inclui, .T. )
// Filtros para montagem do aCols
dbSelectArea("ZR7")
ZR7->( dbSetOrder(1) )
#IFDEF TOP
lQuery := .T.
cQuery := "SELECT * "
cQuery += "FROM "+RetSqlName("ZR7")+" ZR7 "
cQuery += "WHERE ZR7.ZR7_FILIAL='"+xFilial("ZR7")+"' AND "
cQuery += "ZR7.ZR7_COD='"+ZR8->ZR8_COD+"' AND "
cQuery += "ZR7.D_E_L_E_T_<>'*' "
cQuery += "ORDER BY "+SqlOrder(ZR7->(IndexKey()))
#ENDIF
ZR7->( DbCloseArea() )
cSeek := xFilial("ZR7")+ZR8->ZR8_COD
bWhile := {|| ZR7_FILIAL+ZR7_COD }
// Montagem do aHeader e aCols
FillGetDados(nOPc,"ZR7",1,cSeek,bWhile,{{bCond,bAction1,bAction2}},aNoFields,/*aYesFields*/,/*lOnlyYes*/,;
cQuery,/*bMontCols*/,.T.,/*aHeaderAux*/,/*aColsAux*/,/*bafterCols*/,/*bBeforeCols*/,/*bAfterHeader*/,"ZR7")
If lQuery
dbSelectArea("ZR7")
dbCloseArea()
ChkFile("ZR7",.F.)
EndIf
// Caso nao ache nenhum item , abandona rotina.
If ( Len(aCols) == 0 )
ApMsgAlert("Não achou os itens")
lContinua := .F.
EndIf
If ( lContinua )
// Faz o calculo automatico de dimensoes de objetos
aSize := MsAdvSize()
aObjects := {}
AAdd( aObjects, { 100, 40, .t., .f. } ) //primeiro numero é horizontal, 2º vertical, os proximos informan se pode ser alterado ou não f = pode
AAdd( aObjects, { 100, 100, .t., .t. } )
AAdd( aObjects, { 100, 020, .t., .f. } )
aInfo := { aSize[ 1 ], aSize[ 2 ], aSize[ 3 ], aSize[ 4 ], 3, 3 }
aPosObj := MsObjSize( aInfo, aObjects )
aPosGet := MsObjGetPos(aSize[3]-aSize[1],315, {{003,033,160,200,240,263}} )
DEFINE MSDIALOG oDlg TITLE cCadastro From aSize[7],0 to aSize[6],aSize[5] of oMainWnd PIXEL
EnChoice( cAlias, nReg, nOpc, , , , , aPosObj[1],aCpos2,3)
oGetd := MsGetDados():New(aPosObj[2,1],aPosObj[2,2],aPosObj[2,3],aPosObj[2,4],nOpc,,,"",,aCpos1,nColFreeze,,,,,,,,lFreeze)
//ACTIVATE MSDIALOG oDlg ON INIT EnchoiceBar(oDlg, {||oDlg:End()},{||oDlg:End()})
ACTIVATE MSDIALOG oDlg On Init (EnchoiceBar(oDlg,bOk,bCancel))
IF lRet
Gravar()
ENDIF
EndIf
Return
Static function gravar()
//gravando na tabela
RecLock("ZR8",.T.)
ZR8->ZR8_FILIAL :=xFilial("ZR8")
ZR8->ZR8_DATA := M->ZR8_DATA
ZR8->ZR8_QUANT := M->ZR8_QUANT
ZR8->(MsUnlock())
//gravando na tabela
RecLock("ZR7",.T.)
ZR7->ZR7_FILIAL :=xFilial("ZR7")
ZR7->ZR7_DATA := M->ZR7_DATA
ZR7->ZR7_JANELA := M->ZR7_JANELA
ZR7->ZR7_DOCA := M->ZR7_DOCA
ZR7->ZR7_CHEGAD := M->ZR7_CHEGAD
ZR7->ZR7_POSINI := M->ZR7_POSINI
ZR7->ZR7_POSFIN := M->ZR7_POSFIN
ZR7->ZR7_DESINI := M->ZR7_DESINI
ZR7->ZR7_DESFIN := M->ZR7_DESFIN
ZR7->ZR7_SAIDA := M->ZR7_SAIDA
ZR7->ZR7_MOTORI := M->ZR7_MOTORI
ZR7->ZR7_PLACA := M->ZR7_PLACA
ZR7->ZR7_NUMCOM := M->ZR7_NUMCOM
//ZR7->ZR7_STATUS
ZR7->(MsUnlock())
Return
Por favor Acessar ou Registrar para participar da conversa.
- alyson
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 118
- Obrigados Recebidos: 1
10 anos 10 meses atrás #19758
por alyson
Respondido por alyson no tópico Tela modelo 2
Fala Rei... segue o link do tdn com um modelo de tela Cabeçalho e Item (estilo Pedido de Venda SC5/SC6)
As tabelas utilizadas nesse exemplo são padrão AC1 -> Cabeçalho e AC2 -> item
assim fica mais fácil apenas compilar o fonte no link
tdn.totvs.com/display/tec/Modelo+3
Apenas lembrando é um fonte padrão então se faz necessário mudar as Function para user function e suas chamadas
para u_nomeFunção
arquivo em anexo em todo caso....
Abraço...
As tabelas utilizadas nesse exemplo são padrão AC1 -> Cabeçalho e AC2 -> item
assim fica mais fácil apenas compilar o fonte no link
tdn.totvs.com/display/tec/Modelo+3
Apenas lembrando é um fonte padrão então se faz necessário mudar as Function para user function e suas chamadas
para u_nomeFunção
arquivo em anexo em todo caso....
Abraço...
Por favor Acessar ou Registrar para participar da conversa.
Tempo para a criação da página:0.109 segundos