Geralmente criamos os dataobjects com antecedência mas, por uma razão ou por outra, podemos precisar de criar um dataobject dinamicamente. Neste post, mostro como criar um a partir de uma query. O processo é todo bem simples e fácil de ser gerenciado mas, dependendo do tamanho da query, pode afetar a performance do sistema.
O que estou chamando de dataobject é o que chamamos comumente de DataWindow, mas ele é o objeto que atribuímos na propriedade dataobject (dw_1.dataobject = “dw_xxx”), ou seja, este procedimento funcionará tanto para Datawindows quanto para Datastores.
Para realizar esta implementação, você vai precisar das seguintes coisas: Objeto transaction valido e conectado, uma consulta (query) e um controle Datawindow. Neste exemplo, vamos utilizar o SQLCA e o dw_1.
Primeiro, vamos criar a query:
string ls_select string ls_where string ls_dwsyntax string ls_err ls_select = "select id, cli_nome, cli_email, cli_status from tbl_cliente" ls_where = " where cli_nome like '%guaxinim%'" ls_select += ls_where
O próximo passo é criar a sintaxe da datawindow a partir desta consulta:
ls_dwsyntax = SQLCA.SyntaxFromSQL (ls_select, "Style(Type=grid)", ls_err)
O segundo argumento da função SyntaxFromSQL indica os estilos que serão aplicados na datawindow que vamos criar. Você pode utilizar a ferramenta Datawindow Syntax para criar algo mais personalizado ou copiar de uma datawindow existente. Outro ponto importante é o terceiro argumento, que indica qual erro ocorreu.
O último passo é criar a datawindow a partir desta sintaxe que geramos:
dw_1.Create (ls_dwsyntax, ls_err)
Esta função cria o objeto datawindow em sí. Ele também possui um argumento que armazena a mensagem de erro, caso exista alguma. Se tudo deu certo, você ainda precisará associar um objeto transaction nesta datawindow.
Abaixo está o exemplo completo, incluindo os tratamentos de erro.
string ls_select string ls_where string ls_dwsyntax string ls_err ls_select = "select id, cli_nome, cli_email, cli_status from tbl_cliente" ls_where = " where cli_nome like '%guaxinim%'" ls_select += ls_where ls_dwsyntax = SQLCA.SyntaxFromSQL ( ls_select, "Style(Type=grid)", ls_err ) IF ls_err <> '' THEN MessageBox ("Deu ruim!", ls_err, StopSign!) ELSE dw_1.Create ( ls_dwsyntax, ls_err ) IF ls_err <> '' THEN MessageBox ("Deu ruim!", ls_err, StopSign!) ELSE dw_1.SetTrans(SQLCA) dw_1.Retrieve() END IF END IF
Espero ter ajudado.
Latest posts by Breno RdV (see all)
- O que é Metaclass e como ela funciona. (#python #dev #metaclass) - janeiro 11, 2023
- Entenda a mágica dos Generators. (#python, #dev, #generator, #iterator) - dezembro 28, 2022
- Ordenando um DataFrame por múltiplas colunas. (#python #pandas #jupyter #dev #data) - agosto 3, 2022