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



Sintaxe


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


Métodos GET


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

Expandir
titleGET COUNT

Método GET: COUNT

Retorna a quantidade de registros encontrados na consulta efetuada pelo método EXECUTE.

Sintaxe


Bloco de código
_ADVPL_get_property(< cReference >,"COUNT") => INTEGER

Retorno


TipoDescrição
INTEGERQuantidade de registros encontrados na consulta.

Exemplo


Bloco de código
titleExemplo SQLCODE
linenumberstrue
#------------------------------------------------------------------------------#
FUNCTION LQUERY_getCOUNT()
#------------------------------------------------------------------------------#
    DEFINE l_count INTEGER
    LET l_count = _ADVPL_get_property(m_query_reference,"COUNT")
END FUNCTION




Expandir
titleGET FTP_CONNECT

Método GET:





Expandir
titleGET EXECUTE

Método GET: EXECUTE

Executa uma query SQL no banco de dados, permitindo limitar e paginar os registros encontrados.

Sintaxe


Bloco de código
_ADVPL_get_property(< cReference >,"EXECUTE",< cSql >,< aRecord >,[ nIni ],[ nCount ]) => SMALLINT

Parâmetros


NomeTipoDescriçãoObrigatório?Padrão
cSqlCHAR(10000)Query SQL que será executada e manipulada pelo componente.Sim
aRecordARRAY OF RECORDARRAY OF RECORD onde serão salvos os dados encontrados na consulta.1
Sim
nIniINTEGERNúmero do registro inicial para paginação dos registros encontrados na consulta.Não1
nCountINTEGERQuantidade máxima de registros que devem ser retornadas na consulta.2
Não

1 Após a execução da query, o aRecord é redimensionado para conter apenas a quantidade de registros encontrados.
2
Se informado nulo para o parâmetro nCount, serão retornados todos os registros encontrados na consulta.

Retorno


TipoDescrição
SMALLINTRetorna verdadeiro se o SQL foi executado com sucesso.

Exemplo


Bloco de código
titleExemplo SQLCODE
linenumberstrue
#------------------------------------------------------------------------------#
FUNCTION LQUERY_teste()
#------------------------------------------------------------------------------#
    DEFINE l_component VARCHAR(10)
    DEFINE l_sql_stmt CHAR(500)
    DEFINE l_status SMALLINT

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

    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"
 
Expandir
titleGET FTP_CONNECT

Método GET:



Expandir
titleGET FTP_CONNECT

Método GET:






Métodos SET


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



Exemplo


Expandir
titleExemplo de utilização
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