- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- FILIAL NÃO SALVA TABELAS FILHO
×
Linguagem de Programação ADVPL
Perguntas FILIAL NÃO SALVA TABELAS FILHO
- FIOTAO
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 4
- Obrigados Recebidos: 0
8 anos 1 mês atrás #31209
por FIOTAO
FILIAL NÃO SALVA TABELAS FILHO foi criado por FIOTAO
Prezados, boa tarde, sou novo nesse mundo ADVPL e estou sofrendo um pouco para conseguir salvar a filial nas tabelas filho. No dicionario de dados, a tabela está como exclusivo.
Quando consigo salvar os dados, na principal salva a filial e nas filhas não.
//Bibliotecas
#Include 'Protheus.ch'
#Include 'FWMVCDef.ch'
//Variáveis Estáticas
Static cTitulo := "CADASTRO DE ANALISES"
User Function zMVCMdX()
Local aArea := GetArea()
Local oBrowse
Private ANALISE := ""
Private FILIAL := ""
oBrowse := FWMBrowse():New()
oBrowse:SetAlias("ZA5")
oBrowse:SetDescription(cTitulo)
oBrowse:Activate()
RestArea(aArea)
Return Nil
Static Function MenuDef()
Local aRot := {}
//Adicionando opções
ADD OPTION aRot TITLE 'Visualizar' ACTION 'VIEWDEF.zMVCMdX' OPERATION MODEL_OPERATION_VIEW ACCESS 0 //OPERATION 1
//ADD OPTION aRot TITLE 'Legenda' ACTION 'u_zMVC01Leg' OPERATION 6 ACCESS 0 //OPERATION X
ADD OPTION aRot TITLE 'Incluir' ACTION 'VIEWDEF.zMVCMdX' OPERATION MODEL_OPERATION_INSERT ACCESS 0 //OPERATION 3
ADD OPTION aRot TITLE 'Alterar' ACTION 'VIEWDEF.zMVCMdX' OPERATION MODEL_OPERATION_UPDATE ACCESS 0 //OPERATION 4
ADD OPTION aRot TITLE 'Excluir' ACTION 'VIEWDEF.zMVCMdX' OPERATION MODEL_OPERATION_DELETE ACCESS 0 //OPERATION 5
Return aRot
/*
*
| Func: ModelDef |
| Autor: Daniel Atilio |
| Data: 17/08/2015 |
| Desc: Criação do modelo de dados MVC |
| Obs.: / |
*
*/
Static Function ModelDef()
Local oModel := Nil
Local oStPai := FWFormStruct(1, 'ZA5')
Local oStFilho := FWFormStruct(1, 'ZA6')
Local oStNeto := FWFormStruct(1, 'ZA7')
Local aZA6Rel := {}
Local aZA7Rel := {}
//Criando o modelo e os relacionamentos
//oModel := MPFormModel():New('zMVCMdXM', { |oModel|zMVCMdXI( oModel ) })
oModel := MPFormModel():New('zMVCMdXM', { |oModel|zMVCMdXU( oModel ) } , { |oModel|zMVCMdXV( oModel ) })
oModel:AddFields('ZA5MASTER',/*cOwner*/,oStPai,{|oModel|zMVCMdXT(oModel)},,)
oModel:AddGrid('ZA6DETAIL','ZA5MASTER',oStFilho,/*bLinePre*/, /*bLinePost*/,/*bPre - Grid Inteiro*/,/*bPos - Grid Inteiro*/,/*bLoad - Carga do modelo manualmente*/) //cOwner é para quem pertence
oModel:AddGrid('ZA7DETAIL','ZA6DETAIL',oStNeto,/*bLinePre*/, /*bLinePost*/,/*bPre - Grid Inteiro*/,/*bPos - Grid Inteiro*/,/*bLoad - Carga do modelo manualmente*/) //cOwner é para quem pertence
//Fazendo o relacionamento entre o Pai e Filho
aAdd(aZA6Rel, {'ZA6_FILIAL', 'xFilial( "ZA5" )'} )
aAdd(aZA6Rel, {'ZA6_ANALIS','ZA5_ANALIS'})
//Fazendo o relacionamento entre o Filho e Neto
aAdd(aZA7Rel, {'ZA7_FILIAL','xFilial( "ZA5" )'} )
aAdd(aZA7Rel, {'ZA7_ANALIS','ZA5_ANALIS'})
oModel:SetRelation('ZA6DETAIL', aZA6Rel, ZA6->(IndexKey(1))) //IndexKey -> quero a ordenação e depois filtrado
//oModel:GetModel('ZA6DETAIL'):SetUniqueLine({"ZA6_FILIAL","ZA6_ANALIS"}) //Não repetir informações ou combinações {"CAMPO1","CAMPO2","CAMPOX"}
oModel:SetPrimaryKey({"ZA6_FILIAL","ZA6_ANALIS"})
oModel:SetRelation('ZA7DETAIL', aZA7Rel, ZA7->(IndexKey(1))) //IndexKey -> quero a ordenação e depois filtrado
//oModel:GetModel('ZA7DETAIL'):SetUniqueLine({"ZA7_FILIAL","ZA7_ANALIS"}) //Não repetir informações ou combinações {"CAMPO1","CAMPO2","CAMPOX"}
oModel:SetPrimaryKey({"ZA7_FILIAL","ZA7_ANALIS"})
//Setando as descrições
oModel:SetDescription("CADASTRO DE ANALISE")
oModel:GetModel('ZA5MASTER'):SetDescription('ANALISE')
oModel:GetModel('ZA6DETAIL'):SetDescription('ANALISE FISICA')
oModel:GetModel('ZA7DETAIL'):SetDescription('ANALISE QUIMICA')
Return oModel
/*
*
| Func: ViewDef |
| Autor: Daniel Atilio |
| Data: 17/08/2015 |
| Desc: Criação da visão MVC |
| Obs.: / |
*
*/
Static Function ViewDef()
Local oView := Nil
Local oModel := FWLoadModel('zMVCMdX')
Local oStPai := FWFormStruct(2, 'ZA5')
Local oStFilho := FWFormStruct(2, 'ZA6')
Local oStNeto := FWFormStruct(2, 'ZA7')
//Estruturas das tabelas e campos a serem considerados
Local aStruZA5 := ZA5->(DbStruct())
Local aStruZA6 := ZA6->(DbStruct())
Local aStruZA7 := ZA7->(DbStruct())
Local cConsZA5 := "ZA5_ANALIS;ZA5_USUARI;ZA5_AMOSTR;ZA5_DATA "
Local cConsZA6 := "ZA6_MALHAS;ZA6_MATERI"
Local cConsZA7 := "ZA7_SUBSTA;ZA7_METODO;ZA7_RESULT;ZA7_ATENDE"
Local nAtual := 0
//Criando a View
oView := FWFormView():New()
oView:SetModel(oModel)
//Adicionando os campos do cabeçalho e o grid dos filhos
oView:AddField('VIEW_ZA5',oStPai,'ZA5MASTER')
oView:AddGrid('VIEW_ZA6',oStFilho,'ZA6DETAIL')
oView:AddGrid('VIEW_ZA7',oStNeto,'ZA7DETAIL')
//Setando o dimensionamento de tamanho
oView:CreateHorizontalBox('CABEC',20)
oView:CreateHorizontalBox('GRID',40)
oView:CreateHorizontalBox('GRID2',27)
//Amarrando a view com as box
oView:SetOwnerView('VIEW_ZA5','CABEC')
oView:SetOwnerView('VIEW_ZA6','GRID')
oView:SetOwnerView('VIEW_ZA7','GRID2')
//Habilitando título
oView:EnableTitleView('VIEW_ZA5','ANALISE')
oView:EnableTitleView('VIEW_ZA6','ANALISE FISICA')
oView:EnableTitleView('VIEW_ZA7','ANALISE QUIMICA')
//Percorrendo a estrutura da ZA5
For nAtual := 1 To Len(aStruZA5)
//Se o campo atual não estiver nos que forem considerados
If ! Alltrim(aStruZA5[nAtual][01]) $ cConsZA5
oStPai:RemoveField(aStruZA5[nAtual][01])
EndIf
Next
//Percorrendo a estrutura da ZA6
For nAtual := 1 To Len(aStruZA6)
//Se o campo atual não estiver nos que forem considerados
If ! Alltrim(aStruZA6[nAtual][01]) $ cConsZA6
oStFilho:RemoveField(aStruZA6[nAtual][01])
EndIf
Next
//Percorrendo a estrutura da ZA7
For nAtual := 1 To Len(aStruZA7)
//Se o campo atual não estiver nos que forem considerados
If ! Alltrim(aStruZA7[nAtual][01]) $ cConsZA7
oStNeto:RemoveField(aStruZA7[nAtual][01])
EndIf
Next
Return oView
Static Function zMVCMdXT( oModel )
Local lRet := .T.
Local oModelZA5 := oModel:GetModel( 'ZA5MASTER' )
ANALISE := ZA5->ZA5_ANALIS
FILIAL := ZA5->ZA5_FILIAL
Return(lRet)
//// CLICAR NO CONFIRMAR
Static Function zMVCMdXV( oModel )
Local lRet := .T.
Local oModelZA5 := oModel:GetModel( 'ZA5MASTER' )
Local oModelZA6 := oModel:GetModel( 'ZA6DETAIL' )
Local oModelZA7 := oModel:GetModel( 'ZA7DETAIL' )
Local nOpc := oModel:GetOperation()
//LOCAL aArea := GetArea()
ALERT(ANALISE)
if Empty(oModelZA6:GetValue('ZA6_ANALIS'))
oModelZA6:SetValue('ZA6_ANALIS',ANALISE)
oModelZA6:SetValue('ZA6_FILIAL',FILIAL)
Endif
if Empty(oModelZA7:GetValue('ZA7_ANALIS'))
oModelZA7:SetValue('ZA7_ANALIS',ANALISE)
oModelZA7:SetValue('ZA7_FILIAL',FILIAL)
Endif
Begin Transaction
if nOpc == MODEL_OPERATION_INSERT
ALERT(oModelZA7:GetValue('ZA7_FILIAL'))
dbSelectArea("ZA5")
ZA5->(dbSetOrder(1))
ZA5->(dbGoTop())
If(ZA5->(dbSeek(xFilial("ZA5")+Alltrim(oModelZA5:GetValue('ZA5_ANALIS')))))
SFCMsgErro("A chave "+Alltrim(oModelZA5:GetValue('ZA5_ANALIS'))+" ja foi informada!","fEXPMVC1")
lRet := .F.
Endif
Endif
ALERT(lRet)
if !lRet
DisarmTransaction()
Endif
End Transaction
//RestArea(aArea)
FwModelActive( oModel, .T. )
Return lRet
//// PRE VALIDACAO
Static Function zMVCMdXU( oModel )
Local lRet := .T.
Local oModelZA5 := oModel:GetModel( 'ZA5MASTER' )
Local oModelZA6 := oModel:GetModel( 'ZA6DETAIL' )
Local oModelZA7 := oModel:GetModel( 'ZA7DETAIL' )
Local nOpc := oModel:GetOperation()
Local aArea := GetArea()
if Empty(oModelZA6:GetValue('ZA6_ANALIS'))
oModelZA6:SetValue('ZA6_ANALIS',ALLTRIM(ANALISE))
oModelZA6:SetValue('ZA6_FILIAL',XFILIAL('ZA5'))
Endif
if Empty(oModelZA7:GetValue('ZA7_ANALIS'))
oModelZA7:SetValue('ZA7_ANALIS',ALLTRIM(ANALISE))
oModelZA7:SetValue('ZA7_FILIAL',XFILIAL('ZA5'))
Endif
RestArea(aArea)
FwModelActive( oModel, .T. )
Return lRet
Quando consigo salvar os dados, na principal salva a filial e nas filhas não.
//Bibliotecas
#Include 'Protheus.ch'
#Include 'FWMVCDef.ch'
//Variáveis Estáticas
Static cTitulo := "CADASTRO DE ANALISES"
User Function zMVCMdX()
Local aArea := GetArea()
Local oBrowse
Private ANALISE := ""
Private FILIAL := ""
oBrowse := FWMBrowse():New()
oBrowse:SetAlias("ZA5")
oBrowse:SetDescription(cTitulo)
oBrowse:Activate()
RestArea(aArea)
Return Nil
Static Function MenuDef()
Local aRot := {}
//Adicionando opções
ADD OPTION aRot TITLE 'Visualizar' ACTION 'VIEWDEF.zMVCMdX' OPERATION MODEL_OPERATION_VIEW ACCESS 0 //OPERATION 1
//ADD OPTION aRot TITLE 'Legenda' ACTION 'u_zMVC01Leg' OPERATION 6 ACCESS 0 //OPERATION X
ADD OPTION aRot TITLE 'Incluir' ACTION 'VIEWDEF.zMVCMdX' OPERATION MODEL_OPERATION_INSERT ACCESS 0 //OPERATION 3
ADD OPTION aRot TITLE 'Alterar' ACTION 'VIEWDEF.zMVCMdX' OPERATION MODEL_OPERATION_UPDATE ACCESS 0 //OPERATION 4
ADD OPTION aRot TITLE 'Excluir' ACTION 'VIEWDEF.zMVCMdX' OPERATION MODEL_OPERATION_DELETE ACCESS 0 //OPERATION 5
Return aRot
/*
*
| Func: ModelDef |
| Autor: Daniel Atilio |
| Data: 17/08/2015 |
| Desc: Criação do modelo de dados MVC |
| Obs.: / |
*
*/
Static Function ModelDef()
Local oModel := Nil
Local oStPai := FWFormStruct(1, 'ZA5')
Local oStFilho := FWFormStruct(1, 'ZA6')
Local oStNeto := FWFormStruct(1, 'ZA7')
Local aZA6Rel := {}
Local aZA7Rel := {}
//Criando o modelo e os relacionamentos
//oModel := MPFormModel():New('zMVCMdXM', { |oModel|zMVCMdXI( oModel ) })
oModel := MPFormModel():New('zMVCMdXM', { |oModel|zMVCMdXU( oModel ) } , { |oModel|zMVCMdXV( oModel ) })
oModel:AddFields('ZA5MASTER',/*cOwner*/,oStPai,{|oModel|zMVCMdXT(oModel)},,)
oModel:AddGrid('ZA6DETAIL','ZA5MASTER',oStFilho,/*bLinePre*/, /*bLinePost*/,/*bPre - Grid Inteiro*/,/*bPos - Grid Inteiro*/,/*bLoad - Carga do modelo manualmente*/) //cOwner é para quem pertence
oModel:AddGrid('ZA7DETAIL','ZA6DETAIL',oStNeto,/*bLinePre*/, /*bLinePost*/,/*bPre - Grid Inteiro*/,/*bPos - Grid Inteiro*/,/*bLoad - Carga do modelo manualmente*/) //cOwner é para quem pertence
//Fazendo o relacionamento entre o Pai e Filho
aAdd(aZA6Rel, {'ZA6_FILIAL', 'xFilial( "ZA5" )'} )
aAdd(aZA6Rel, {'ZA6_ANALIS','ZA5_ANALIS'})
//Fazendo o relacionamento entre o Filho e Neto
aAdd(aZA7Rel, {'ZA7_FILIAL','xFilial( "ZA5" )'} )
aAdd(aZA7Rel, {'ZA7_ANALIS','ZA5_ANALIS'})
oModel:SetRelation('ZA6DETAIL', aZA6Rel, ZA6->(IndexKey(1))) //IndexKey -> quero a ordenação e depois filtrado
//oModel:GetModel('ZA6DETAIL'):SetUniqueLine({"ZA6_FILIAL","ZA6_ANALIS"}) //Não repetir informações ou combinações {"CAMPO1","CAMPO2","CAMPOX"}
oModel:SetPrimaryKey({"ZA6_FILIAL","ZA6_ANALIS"})
oModel:SetRelation('ZA7DETAIL', aZA7Rel, ZA7->(IndexKey(1))) //IndexKey -> quero a ordenação e depois filtrado
//oModel:GetModel('ZA7DETAIL'):SetUniqueLine({"ZA7_FILIAL","ZA7_ANALIS"}) //Não repetir informações ou combinações {"CAMPO1","CAMPO2","CAMPOX"}
oModel:SetPrimaryKey({"ZA7_FILIAL","ZA7_ANALIS"})
//Setando as descrições
oModel:SetDescription("CADASTRO DE ANALISE")
oModel:GetModel('ZA5MASTER'):SetDescription('ANALISE')
oModel:GetModel('ZA6DETAIL'):SetDescription('ANALISE FISICA')
oModel:GetModel('ZA7DETAIL'):SetDescription('ANALISE QUIMICA')
Return oModel
/*
*
| Func: ViewDef |
| Autor: Daniel Atilio |
| Data: 17/08/2015 |
| Desc: Criação da visão MVC |
| Obs.: / |
*
*/
Static Function ViewDef()
Local oView := Nil
Local oModel := FWLoadModel('zMVCMdX')
Local oStPai := FWFormStruct(2, 'ZA5')
Local oStFilho := FWFormStruct(2, 'ZA6')
Local oStNeto := FWFormStruct(2, 'ZA7')
//Estruturas das tabelas e campos a serem considerados
Local aStruZA5 := ZA5->(DbStruct())
Local aStruZA6 := ZA6->(DbStruct())
Local aStruZA7 := ZA7->(DbStruct())
Local cConsZA5 := "ZA5_ANALIS;ZA5_USUARI;ZA5_AMOSTR;ZA5_DATA "
Local cConsZA6 := "ZA6_MALHAS;ZA6_MATERI"
Local cConsZA7 := "ZA7_SUBSTA;ZA7_METODO;ZA7_RESULT;ZA7_ATENDE"
Local nAtual := 0
//Criando a View
oView := FWFormView():New()
oView:SetModel(oModel)
//Adicionando os campos do cabeçalho e o grid dos filhos
oView:AddField('VIEW_ZA5',oStPai,'ZA5MASTER')
oView:AddGrid('VIEW_ZA6',oStFilho,'ZA6DETAIL')
oView:AddGrid('VIEW_ZA7',oStNeto,'ZA7DETAIL')
//Setando o dimensionamento de tamanho
oView:CreateHorizontalBox('CABEC',20)
oView:CreateHorizontalBox('GRID',40)
oView:CreateHorizontalBox('GRID2',27)
//Amarrando a view com as box
oView:SetOwnerView('VIEW_ZA5','CABEC')
oView:SetOwnerView('VIEW_ZA6','GRID')
oView:SetOwnerView('VIEW_ZA7','GRID2')
//Habilitando título
oView:EnableTitleView('VIEW_ZA5','ANALISE')
oView:EnableTitleView('VIEW_ZA6','ANALISE FISICA')
oView:EnableTitleView('VIEW_ZA7','ANALISE QUIMICA')
//Percorrendo a estrutura da ZA5
For nAtual := 1 To Len(aStruZA5)
//Se o campo atual não estiver nos que forem considerados
If ! Alltrim(aStruZA5[nAtual][01]) $ cConsZA5
oStPai:RemoveField(aStruZA5[nAtual][01])
EndIf
Next
//Percorrendo a estrutura da ZA6
For nAtual := 1 To Len(aStruZA6)
//Se o campo atual não estiver nos que forem considerados
If ! Alltrim(aStruZA6[nAtual][01]) $ cConsZA6
oStFilho:RemoveField(aStruZA6[nAtual][01])
EndIf
Next
//Percorrendo a estrutura da ZA7
For nAtual := 1 To Len(aStruZA7)
//Se o campo atual não estiver nos que forem considerados
If ! Alltrim(aStruZA7[nAtual][01]) $ cConsZA7
oStNeto:RemoveField(aStruZA7[nAtual][01])
EndIf
Next
Return oView
Static Function zMVCMdXT( oModel )
Local lRet := .T.
Local oModelZA5 := oModel:GetModel( 'ZA5MASTER' )
ANALISE := ZA5->ZA5_ANALIS
FILIAL := ZA5->ZA5_FILIAL
Return(lRet)
//// CLICAR NO CONFIRMAR
Static Function zMVCMdXV( oModel )
Local lRet := .T.
Local oModelZA5 := oModel:GetModel( 'ZA5MASTER' )
Local oModelZA6 := oModel:GetModel( 'ZA6DETAIL' )
Local oModelZA7 := oModel:GetModel( 'ZA7DETAIL' )
Local nOpc := oModel:GetOperation()
//LOCAL aArea := GetArea()
ALERT(ANALISE)
if Empty(oModelZA6:GetValue('ZA6_ANALIS'))
oModelZA6:SetValue('ZA6_ANALIS',ANALISE)
oModelZA6:SetValue('ZA6_FILIAL',FILIAL)
Endif
if Empty(oModelZA7:GetValue('ZA7_ANALIS'))
oModelZA7:SetValue('ZA7_ANALIS',ANALISE)
oModelZA7:SetValue('ZA7_FILIAL',FILIAL)
Endif
Begin Transaction
if nOpc == MODEL_OPERATION_INSERT
ALERT(oModelZA7:GetValue('ZA7_FILIAL'))
dbSelectArea("ZA5")
ZA5->(dbSetOrder(1))
ZA5->(dbGoTop())
If(ZA5->(dbSeek(xFilial("ZA5")+Alltrim(oModelZA5:GetValue('ZA5_ANALIS')))))
SFCMsgErro("A chave "+Alltrim(oModelZA5:GetValue('ZA5_ANALIS'))+" ja foi informada!","fEXPMVC1")
lRet := .F.
Endif
Endif
ALERT(lRet)
if !lRet
DisarmTransaction()
Endif
End Transaction
//RestArea(aArea)
FwModelActive( oModel, .T. )
Return lRet
//// PRE VALIDACAO
Static Function zMVCMdXU( oModel )
Local lRet := .T.
Local oModelZA5 := oModel:GetModel( 'ZA5MASTER' )
Local oModelZA6 := oModel:GetModel( 'ZA6DETAIL' )
Local oModelZA7 := oModel:GetModel( 'ZA7DETAIL' )
Local nOpc := oModel:GetOperation()
Local aArea := GetArea()
if Empty(oModelZA6:GetValue('ZA6_ANALIS'))
oModelZA6:SetValue('ZA6_ANALIS',ALLTRIM(ANALISE))
oModelZA6:SetValue('ZA6_FILIAL',XFILIAL('ZA5'))
Endif
if Empty(oModelZA7:GetValue('ZA7_ANALIS'))
oModelZA7:SetValue('ZA7_ANALIS',ALLTRIM(ANALISE))
oModelZA7:SetValue('ZA7_FILIAL',XFILIAL('ZA5'))
Endif
RestArea(aArea)
FwModelActive( oModel, .T. )
Return lRet
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
8 anos 1 mês atrás #31210
por kanaamlrr
Respondido por kanaamlrr no tópico FILIAL NÃO SALVA TABELAS FILHO
O xFilial deve ser sempre da tabela que você está gravando a informação, então você deveria usar por exemplo:
ao invés de
Abraço!
aAdd(aZA6Rel, {'ZA6_FILIAL', 'xFilial( "ZA6" )'} )
ao invés de
aAdd(aZA6Rel, {'ZA6_FILIAL', 'xFilial( "ZA5" )'} )
Abraço!
Por favor Acessar ou Registrar para participar da conversa.
- FIOTAO
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 4
- Obrigados Recebidos: 0
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- FILIAL NÃO SALVA TABELAS FILHO
Tempo para a criação da página:0.101 segundos