[RESOLVIDO] API - Retorno Handle de uma Temp-table

Discussão em 'EMS , HCM e Totvs 11' iniciado por cardosomauricio, Fevereiro 14, 2012.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. cardosomauricio

    cardosomauricio Sem Pontuação

    Pessoal,

    Estou utilizando uma UPC de uma API, onde retorna temp-table tt-epc.

    Porém, em um determinado ponto (tt-epc.cod-event e tt-epc.cod-parameter), retorna uma handle (tt-epc.val-parameter) de uma temp-table.

    Como faço para carregar a temp-table retornada para verificar os dados contidas na mesma.

    Tentei utilizar a lógica abaixo, porém, em tempo de execução, informa que é inapropriado ou inválido o valor da handle na execução do RUN...IN. Acredito que getRecord é apenas para tabela do Banco de dados e não para Temp-table.

    FOR EACH tt-epc NO-LOCK
    WHERE tt-epc.cod-event = p-ind-event
    AND tt-epc.cod-parameter = "handle-tt-requis":

    ASSIGN h-bo = WIDGET-HANDLE(tt-epc.val-parameter).

    IF VALID-HANDLE(h-bo) THEN DO:

    RUN getRecord IN h-bo (OUTPUT TABLE tt-requis).

    FIND FIRST tt-requis NO-LOCK NO-ERROR.

    message tt-requis.deposito-fim view-as alert-box.
    END.

    END.

    Atenciosamente,

    Maurício Cardoso
  2. Cobra.cne

    Cobra.cne Equipe de Suporte Moderador

    Maurício,

    Se é realmente uma temp-table você não vai conseguir fazer um for each nela, vai ter que usar a handle mesmo:

    Código:
    h-bo:FIND-FIRST("NO-LOCK").
    MESSAGE h-bo:BUFFER-FIELD("nome_campo"):BUFFER-VALUE VIEW-AS ALERT-BOX.
    
    Se precisar navegar, ai vai ser necessário criar uma query para isto.

    Espero que tenha ajudado.
  3. cardosomauricio

    cardosomauricio Sem Pontuação

    Funcionou.

    Obrigado pela resposta, apenas um comentário, estou na versão do Progress 10.1B e o comando FIND-FIRST a sintaxe correta é : h-bo:FIND-FIRST("",NO-LOCK).

    Abraços.
  4. danichi

    danichi Sem Pontuação

    Bom dia !

    estou com o mesmo problema porém para mim não funcionou utililzar o find-first. Alguém poderia me ajudar? segue código e erro exibido.
    Estou usando a apapi001.

    Obrigada,
    Daniela.

    {include/i-epc200.i} /** Definição tt-EPC **/
    /*** Definição de Parƒmetros ***/
    DEFINE INPUT PARAM p-ind-event AS CHAR NO-UNDO.
    DEFINE INPUT-OUTPUT PARAM TABLE FOR tt-epc.

    DEF VAR h-BO AS HANDLE NO-UNDO.

    def var h-aux as handle no-undo.

    DEF VAR i-nr-docto AS INTE.

    DEF TEMP-TABLE tt-lin-i-ap NO-UNDO LIKE lin-i-ap .

    IF p-ind-event = 'esup33' THEN
    FOR EACH tt-epc:
    IF tt-epc.cod-parameter = 'handle-tt-lin-i-ap' THEN
    DO:
    MESSAGE tt-epc.val-parameter
    VIEW-AS ALERT-BOX INFO BUTTONS OK.

    ASSIGN h-bo = WIDGET-HANDLE(tt-epc.val-parameter).

    MESSAGE VALID-HANDLE(h-bo)
    VIEW-AS ALERT-BOX INFO BUTTONS OK.

    IF VALID-HANDLE(h-bo) THEN
    DO:
    h-bo:FIND-FIRST("",NO-LOCK).
    MESSAGE h-bo:BUFFER-FIELD("nr-docto"):BUFFER-VALUE VIEW-AS ALERT-BOX.


    END.
    END.
    END.

    Erro exibido:
    FIND-FIRST is not a queryable attribute for TEMP-TABLE widget.
  5. cardosomauricio

    cardosomauricio Sem Pontuação

    Daniela,

    Será necessário setar uma handle de BUFFER, segue abaixo lógica:

    IF p-ind-event = "esup33" THEN
    FOR EACH tt-epc:

    IF tt-epc.cod-parameter = 'handle-tt-lin-i-ap' THEN DO:

    ASSIGN h-bo = WIDGET-HANDLE(tt-epc.val-parameter)
    h-buffer = h-bo:DEFAULT-BUFFER-HANDLE.

    h-buffer:FIND-FIRST("", NO-LOCK).

    MESSAGE "nr-docto: " h-buffer:BUFFER-FIELD("nr-docto"):BUFFER-VALUE VIEW-AS ALERT-BOX.

    END.
    END.

    Favor verificar agora.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página