Alteração MsMGet

Bom dia à todos.

Estou desenvolvendo uma tela para alterar apenas 3 campos em um registro no Contas a Pagar (FINA750) onde o mesmo já esteja liquidado, precisar realizar a manutenção desses campos pois os mesmos serão utilizados em relatórios futuros. Utilizando o P.E. FA750BRW fiz inclusão do botão da seguinte maneira: "aAdd(aRotina, {"Ajuste Competencia", "U_750ALTE", 0, 4, 0, NIL})". Até aqui tudo normal, porém na hora de chamar a rotina 750ALTE com a MsMGet o registro abre como se fosse somente visualização mesmo eu passando os campos que podem ser alterados, já tentei de tudo, temos um fonte parecido onde alteramos as informações adicionais do pedido de vendas, fiz uma comparação entre o que eu desenvolvi e o do pedido de vendas, estão basicamente iguais, alterando apenas alias e nome de variáveis, não estou conseguindo achar onde estou errando para que o registro abra em modo de alteração (testei tanto em registro não liquidado quanto em registro liquidado)

Segue trecho do fonte: User Function 750ALTE() Local cAlias := "SE2" Local nOpcA := 0 Local aSize := {}, aObjects := {}, aInfo := {}, aPObjs := {} Local nFor := 0 Local cCampo := ""

Local aCpoMostra := {"E2_PREFIXO", "E2_TIPO" , "E2_NUM" , "E2_PARCELA", "E2_FORNECE", "E2_LOJA", "E2_NOME" , "E2_NOMFOR", "E2_VALOR", "E2_VALLIQ", "E2_SALDO" ,; "E2_EMISSAO", "E2_VENCTO" , "E2_HIST" , "E2_SITUACA", "E2_NATUREZ", "E2_XNAT", "E2_VENCREA", "E2_VLCRUZ", "E2_MOEDA", "E2_XOBS" , "E2_ORIGEM",; "E2_TXMOEDA", "E2_CODAPRO", "E2_XTPBX", "E2_XCMES" , "E2_XCANO" , "E2_XCOMP"} // campos que serão mostrados em tela Local aCpoEdit := {"E2_XCMES" , "E2_XCANO" , "E2_XCOMP"} // Campos que poderão ser alterados

Private aTela := {}, aGets := {} Private oEnch1

Private aCpoDad := {}

If !FwIsAdmin() MsgAlert("Rotina restrita a administradores!") Return EndIf

aSize := MsAdvSize(.T.) aObjects := {} aAdd(aObjects, {100, 015, .T., .T.}) aAdd(aObjects, {100, 085, .T., .T.})

aInfo := {aSize[01], aSize[02], aSize[03], aSize[04], 0, 0} aPObjs := MsObjSize(aInfo, aObjects, .T.)

RegToMemory(cAlias, .F., .F.)

For nFor := 1 To Len(aCpoMostra) cCampo := aCpoMostra[nFor] If (cAlias)->(FieldPos(cCampo)) > 0 M->&(cCampo) := &(cAlias + "->" + cCampo) EndIf Next nFor

aAdd(aCpoMostra, "NOUSER")

DEFINE MSDIALOG oDlg TITLE "Ajuste de Competencia - CP: " + M->E2_NUM + "/" + M->E2_PARCELA From aSize[7], 0 To aSize[6], aSize[5] Of oMainWnd Pixel

oEnch1 := MsMGet():New(cAlias, &(cAlias)->(Recno()), 4, , , ,aCpoMostra ,aPObjs[1], aCpoEdit, , , , ,oDlg) oEnch1:oBox:Align := CONTROL_ALIGN_ALLCLIENT

ACTIVATE MSDIALOG oDlg CENTER ON INIT EnchoiceBar(oDlg, {||nOpcA := 1, IIF(Obrigatorio(aGets, aTela), oDlg:End(), nOpcA == 0)}, {||nOpcA := 0, oDlg:End()})

If nOpcA == 1 RecLock(cAlias, .F.) For nFor := 1 To Len(aCpoMostra) cCampo := aCpoMostra[nFor] If cCampo <> "NOUSER" .AND. (cAlias)->(FieldPos(cCampo)) > 0 &(cAlias + "->" + cCampo) := M->&(cCampo) aAdd(aCpoDad, {cCampo, M->&(cCampo)}) EndIf Next nFor MsUnLock() EndIf

Return

compartilhar
  • Na linha onde é criado o MsMGet, alterei o parâmetro nOpc para 3, ele liberou para alterar, porém o 3 seria inclusão. Estou com o pé atrás de deixar dessa forma, fiz alguns testes alterando registros em minha base teste e está funcionando.

    Lucas Lott Menegassi   19 de Jan de 2021
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags advpl msmget ou faça a sua própria pergunta.