Versão atual:

MSExecAuto GPEA020

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.

Versões (2):

Ver a versão formatada

MSExecAuto GPEA020

  • criado 09 de Aug de 2023

Comentário

new question