Páginas filhas
  • 5. Widget de consulta rápida

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Informações

A tecnica apresentada aqui foi pensada para reduzir ao máximo a necessidade de alteração dos programas já construidos, motivada pela inclusão de novos parâmetros. Por isso, é apresentada a passagem dos mesmos usando a função _ADVPL_QSSetParametersFWQVSetParametersLogix(), cuja chamada também é realizada pelo serviço REST responsável por chamar o programa de consulta rápida da área de negócio/segmento.

...

No 4GL o nome da função deve conter o sufixo _indicator_get_data e não receberá parâmetros. Estes serão passados para a função através de uma área de memória compartilhada, acessível através da função _ADVPL_QSGetParameterFWQVGetParameterLogix("nome_do_parametro"), onde "nome_do_parâmetro" é o identificador do campo dentro da área de memória compartilhada que contem o valor desejado.

...

A variável RECORD deve ser preenchida com os valores correspondentes antes de ser passada como parâmetro para a função _ADVPL_QSSetParametersFWQVSetParametersLogix(<variavel_record>). Lembre-se de inicializar a variável RECORD antes de atribuir valores aos campos da mesma.

...

Trecho demonstrando a função SEARCH reescrita para chamar a função GET-DATA, caso seja necessário manter as duas funções no fonte. Também é mostrada a definição da variável RECORD e a utilização da função _ADVPL_QSSetParametersFWQVSetParametersLogix().

Bloco de código
languagetext
#---------------------------------------------------------------------------------------------------------------#
FUNCTION log1i_indicator_search(l_filter_column,l_filter_value,l_selection,l_sort_col,l_sort_order,l_rows,l_page)
#---------------------------------------------------------------------------------------------------------------#
    DEFINE l_filter_column CHAR(50),  #Coluna de filtro (opcional)
           l_filter_value  CHAR(300), #Valor do filtro da coluna acima (opcional)
           l_selection     CHAR(01),  #Valor selecionado na lista de filtros (opcional)
           l_sort_col      CHAR(50),  #Coluna de ordenação (opcional)
           l_sort_order    CHAR(04),  #Tipo de ordenação ASC ou DESC (opcional)
           l_rows          SMALLINT,  #Máximo de registros por página
           l_page          SMALLINT   #Página atual de pesquisa
                      
    DEFINE lr_params RECORD
                        l_searchcol    CHAR(50),
                        l_searchval    CHAR(300),
                        l_selection    CHAR(01),
                        l_sortcol      CHAR(50),
                        l_sortorder    CHAR(04),
                        l_rows         CHAR(10),
                        l_page         CHAR(10),
                        l_customfilter CHAR(500)
                     END RECORD

    INITIALIZE lr_params.* TO NULL
    
    # O record recebe os parâmetros da função search
    LET lr_params.l_searchcol    = l_filter_column
    LET lr_params.l_searchval    = l_filter_value 
    LET lr_params.l_selection    = l_selection 
    LET lr_params.l_sortcol      = l_sort_col
    LET lr_params.l_sortorder    = l_sort_order
    LET lr_params.l_rows         = l_rows
    LET lr_params.l_page         = l_page 
    LET lr_params.l_customfilter = "" # Como customfilter não é recebido na função search, seu valor é vazio.
    
    CALL _ADVPL_QSSetParameters(lr_params) # Grava os parâmetros na área compartilhada
    
    RETURN LOG1i_indicator_get_data() # O retorno da função search é o mesmo da get_data

END FUNCTION

...

Os dados atribuidos à área de memória compartilhada são recuperados através da função _ADVPL_QSGetParameterFWQVGetParameterLogix("nome_do_parametro"), onde nome_do_parametro deve ser exatamente igual ao campo da variável RECORD que se deseja recuperar.

...