Alguem ja fez uso da rotina automatica para alterar e para excluir dependentes gpea020.
User function ftstDepend()
Local aCabec := {}
Local aItens := {}
Local aLinha := {}
PRIVATE lMsErroAuto := .F.
RPCSetType(3)
PREPARE ENVIRONMENT EMPRESA "01" FILIAL "060101" TABLES "SRA", "SRB", "SX3", "SX2" MODULO "GPE"
//==============> INCLUSAO DOS PRIMEIROS DEPENDENTES
aCabec := {}
aadd(aCabec,{"RA_FILIAL","060101" ,Nil })
aadd(aCabec,{"RA_MAT" ,"000026" ,Nil })
aLinha := {}
aItens := {}
aadd(aLinha,{"RB_FILIAL" , "060101" , Nil })
aadd(aLinha,{"RB_MAT" , "000026" , Nil })
aadd(aLinha,{"RB_COD" , "01" , Nil })
aadd(aLinha,{"RB_NOME" , "MARIA DA SILVA" , Nil })
aadd(aLinha,{"RB_DTNASC" , Ctod("01/01/99") , Nil })
aadd(aLinha,{"RB_SEXO" , "F" , Nil })
aadd(aLinha,{"RB_GRAUPAR" , "F" , Nil })
aadd(aLinha,{"RB_TIPIR" , "1" , Nil })
aadd(aLinha,{"RB_TIPSF" , "1" , Nil })
aadd(aLinha,{"RB_LOCNASC" , "SP" , Nil })
aadd(aItens,aLinha)
aLinha := {}
aadd(aLinha,{"RB_FILIAL" , "01" , Nil })
aadd(aLinha,{"RB_MAT" , "000026" , Nil })
aadd(aLinha,{"RB_COD" , "02" , Nil })
aadd(aLinha,{"RB_NOME" , "PEDRO DA SILVA" , Nil })
aadd(aLinha,{"RB_DTNASC" , Ctod("01/01/02") , Nil })
aadd(aLinha,{"RB_SEXO" , "M" , Nil })
aadd(aLinha,{"RB_GRAUPAR" , "F" , Nil })
aadd(aLinha,{"RB_TIPIR" , "1" , Nil })
aadd(aLinha,{"RB_TIPSF" , "1" , Nil })
aadd(aLinha,{"RB_LOCNASC" , "SP" , Nil })
aadd(aItens,aLinha)
MSExecAuto({|x,y,k,w,z| GPEA020(x,y,k,w,z)},3,aCabec,aItens,3)
//-- Retorno de erro na execução da rotina
If lMsErroAuto
MostraErro()
Else
msgstop("Registro(s) Incluído(s) !!!")
EndIf
//==============> FIM DA INCLUSAO DOS PRIMEIROS REGISTROS
//==============> TENTATIVA DE ADD UM NOVO DEPENDENTE
aItens := {}
aLinha := {}
aadd(aLinha,{"RB_FILIAL" , "060101" , Nil })
aadd(aLinha,{"RB_MAT" , "000026" , Nil })
aadd(aLinha,{"RB_COD" , "03" , Nil })
aadd(aLinha,{"RB_NOME" , "JORGE MATEUS" , Nil })
aadd(aLinha,{"RB_DTNASC" , Ctod("01/01/04") , Nil })
aadd(aLinha,{"RB_SEXO" , "F" , Nil })
aadd(aLinha,{"RB_GRAUPAR" , "F" , Nil })
aadd(aLinha,{"RB_TIPIR" , "1" , Nil })
aadd(aLinha,{"RB_TIPSF" , "1" , Nil })
aadd(aLinha,{"RB_LOCNASC" , "SP" , Nil })
aadd(aItens,aLinha)
MSExecAuto({|x,y,k,w,z| GPEA020(x,y,k,w,z)},3,aCabec,aItens,3)
//-- Retorno de erro na execução da rotina
If lMsErroAuto
MostraErro()
Else
msgstop("Registro(s) Incluído(s) !!!")
EndIf
//==============> FIM DA TENTATIVA DE ADD UM NOVO DEPENDENTE
//==============> TENTANDO ALTERA O ULTIMO DEPENDENTE PRA CORRECAO DO NOME
aItens := {}
aLinha := {}
aadd(aLinha,{"RB_FILIAL" , "060101" , Nil })
aadd(aLinha,{"RB_MAT" , "000026" , Nil })
aadd(aLinha,{"RB_COD" , "03" , Nil })
aadd(aLinha,{"RB_NOME" , "JORGE MATHEUS" , Nil })
aadd(aLinha,{"RB_DTNASC" , Ctod("01/01/04") , Nil })
aadd(aLinha,{"RB_SEXO" , "F" , Nil })
aadd(aLinha,{"RB_GRAUPAR" , "F" , Nil })
aadd(aLinha,{"RB_TIPIR" , "1" , Nil })
aadd(aLinha,{"RB_TIPSF" , "1" , Nil })
aadd(aLinha,{"RB_LOCNASC" , "SP" , Nil })
aadd(aItens,aLinha)
MSExecAuto({|x,y,k,w,z| GPEA020(x,y,k,w,z)},4,aCabec,aItens,4)
//-- Retorno de erro na execução da rotina
If lMsErroAuto
MostraErro()
Else
msgstop("Registro(s) Incluído(s) !!!")
EndIf
//==============> FIM DA ALTERACAO
//==============> EXCLUSAO DO PRIMEIRO DEPENDENTE
aItens := {}
aLinha := {}
aadd(aLinha,{"RB_FILIAL" , "060101" , Nil })
aadd(aLinha,{"RB_MAT" , "000026" , Nil })
aadd(aLinha,{"RB_COD" , "01" , Nil })
aadd(aLinha,{"RB_NOME" , "MARIA DA SILVA" , Nil })
aadd(aLinha,{"RB_DTNASC" , Ctod("01/01/99") , Nil })
aadd(aLinha,{"RB_SEXO" , "F" , Nil })
aadd(aLinha,{"RB_GRAUPAR" , "F" , Nil })
aadd(aLinha,{"RB_TIPIR" , "1" , Nil })
aadd(aLinha,{"RB_TIPSF" , "1" , Nil })
aadd(aLinha,{"RB_LOCNASC" , "SP" , Nil })
aadd(aItens,aLinha)
MSExecAuto({|x,y,k,w,z| GPEA020(x,y,k,w,z)},5,aCabec,aItens,5)
//-- Retorno de erro na execução da rotina
If lMsErroAuto
MostraErro()
Else
msgstop("Registro(s) Incluído(s) !!!")
EndIf
Return(.T.)
Fiz este pequeno fonte para exemplificar, ocorre erro na alteracao dando como chave duplicada devido ter este codigo e ele compreende como inclusao.
E ao excluir um unico dependente ocorre a exclusao de todos.