Páginas filhas
  • LGX - LQUERY

Versões comparadas

Chave

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

Pagetitle
LQUERY
LQUERY
Cria, manipula e executa queries SQL dinâmicas permitindo limitar e paginar os resultados obtidos na consulta.

Hierarquia

...

Métodos GET

...

Inclusão de trecho
LQUERY-GET
LQUERY-GET
nopaneltrue

Métodos SET

...

Inclusão de trecho
LQUERY-SET
LQUERY-SET
nopaneltrue

Sintaxe

...

Bloco de código
LET m_query_reference = _ADVPL_create_component(NULL,"LQUERY")

Exemplo

...

Bloco de código
titleExemplo LQUERY
linenumberstrue
DATABASE logix

DEFINE m_query_reference VARCHAR(10)

#------------------------------------------------------------------------------#
FUNCTION LQUERY_teste()
#------------------------------------------------------------------------------#
    DEFINE l_sql_stmt CHAR(500)
    DEFINE l_status SMALLINT
    DEFINE l_message CHAR(200)

    DEFINE la_menu_logix ARRAY[50] OF RECORD LIKE menu_logix.*

    DEFINE l_ind SMALLINT
    DEFINE l_length SMALLINT

    INITIALIZE la_menu_logix TO NULL

    # Monta o SQL que será executado pelo componente.
    LET l_sql_stmt = "SELECT cod_sistema,",
                            "cod_nivel_1,",
                            "cod_nivel_2,",
                            "cod_nivel_3,",
                            "num_sequencia,",
                            "cod_processo,",
                            "cod_tip_processo,",
                            "cod_help,",
                            "cod_transacao,",
                            "den_transacao,",
                            "chave_sistema",
                      " FROM menu_logix",
                     " WHERE cod_processo IS NOT NULL",
                     " ORDER BY cod_processo"

    # Cria o componente LQUERY.
    LET m_query_reference = _ADVPL_create_component(NULL,"LQUERY")

    # Define um evento de exeução para cada registro encontrado.
    CALL _ADVPL_set_property(m_query_reference,"EVENT","LQUERY_testeEvent")

    # Executa o SQL, retornando 50 registros a partir do 250o registro.
    LET l_status = _ADVPL_get_property(m_query_reference,"EXECUTE",l_sql_stmt,la_menu_logix,250,50)

    # Se retornou falso, exibe a mensagem de erro em tela.
    IF  NOT l_status THEN
        LET l_message = _ADVPL_get_property(m_query_reference,"ERRMESSAGE")
        CALL log0030_mensagem(l_message,"excl")
        RETURN FALSE
    END IF

    # Recupera a quantidade de registros encontrados na consulta.
    LET l_length = _ADVPL_get_property(m_query_reference,"COUNT")

    FOR l_ind = 1 TO l_length
        CALL CONOUT("MENU LOGIX "||la_menu_logix[l_ind].cod_processo CLIPPED||".")
    END FOR

    # Remove e libera o componente da memória.
    CALL _ADVPL_destroy_component(m_query_reference)
    LET m_query_reference = NULL

    RETURN TRUE
END FUNCTION

#------------------------------------------------------------------------------#
FUNCTION LQUERY_testeEvent(l_ind)
#------------------------------------------------------------------------------#
    DEFINE l_ind INTEGER
    DEFINE lr_menu_logix RECORD LIKE menu_logix.*

    LET lr_menu_logix.cod_sistema = _ADVPL_get_property(m_query_reference,"VALUE","cod_sistema",l_ind)
    LET lr_menu_logix.cod_nivel_1 = _ADVPL_get_property(m_query_reference,"VALUE","cod_nivel_1",l_ind)
    LET lr_menu_logix.cod_nivel_2 = _ADVPL_get_property(m_query_reference,"VALUE","cod_nivel_2",l_ind)
    LET lr_menu_logix.cod_nivel_3 = _ADVPL_get_property(m_query_reference,"VALUE","cod_nivel_3",l_ind)
    LET lr_menu_logix.num_sequencia = _ADVPL_get_property(m_query_reference,"VALUE","num_sequencia",l_ind)
    LET lr_menu_logix.cod_processo = _ADVPL_get_property(m_query_reference,"VALUE","cod_processo",l_ind)
    LET lr_menu_logix.cod_tip_processo = _ADVPL_get_property(m_query_reference,"VALUE","cod_tip_processo",l_ind)
    LET lr_menu_logix.cod_help = _ADVPL_get_property(m_query_reference,"VALUE","cod_help",l_ind)
    LET lr_menu_logix.cod_transacao = _ADVPL_get_property(m_query_reference,"VALUE","cod_transacao",l_ind)
    LET lr_menu_logix.den_transacao = _ADVPL_get_property(m_query_reference,"VALUE","den_transacao",l_ind)
    LET lr_menu_logix.chave_sistema = _ADVPL_get_property(m_query_reference,"VALUE","chave_sistema",l_ind)

    CALL CONOUT("MENU LOGIX EVENT "||lr_menu_logix.cod_processo CLIPPED||".")

    RETURN TRUE
END FUNCTION