VBA Access - Inserindo SQL Dinâmico na Query - Access 2013 Generate dynamic SQL statements



O MS Access é tão flexível e dinâmico, que nos permite facilidades criativas inimagináveis. Bem, agora são imagináveis. Veja  a seguir...

Antigamente, a dois ou três anos atrás, quando desejávamos alterar uma query que não servia mais aos nossos propósitos, usávamos a velha técnica de apagá-la, criando uma nova com os comandos SQL que desejávamos.

De fato, isso não causava grandes transtornos dentro do banco de dados, uma vez que não ocorresse excessivamente, transformando-se numa ação de processamento paralelo. Mas (sempre há um mas), se esta ação fosse constante e requeresse processamento contínuos, essa técnica não se aplicaria tão bem, trazendo transtornos tais como a corrupção do banco, dependendo do tipo de código SQL que estivermos gerando. 

A versão do MS Access 2013 permiti-nos aplicar uma técnica mais simples, avançada, e eficiente. Esta não trará quaisquer transtornos e tão trará morosidade as nossas aplicações.

Qual o segredo?


Reflitamos um pouco:


Uma query nada mais é do que mais um objeto dentro do banco de dados.

Ao alinharmos esse conceito básico, podemos começar a ter ideias. Por exemplo, todo objeto é composto por propriedades.


O código que compõe o objeto é, de certo modo, parte das suas propriedades. E se pudermos trocar o valor da propriedade?


Sim, podemos fazer isso. Como?


Execute as seguintes funcionalidades:


Dim nSQL01 as String

Let nSQL01 = "Select * from Tbl_Bernardes"



    ' Criando a query fisicamente.
    'Call ShowProcess ("Criando a query fisicamente: 'qry_01_Bernardes'", nSQL01)  ' Essa função mostra uma mensagem na tela.
    Call UpdateQuery ("qry_01_Bernardes", nSQL01)

Sub UpdateQuery (QueryName, SQL)
    '        Author: André Luiz Bernardes - Bernardess@gmail.com.
    '          Date: 22/01/2013 - 09:30.
    '   Application: Bernardess Application
    ' Functionality: Criando fisicamente uma query.

    ' Usa o nome e a String SQL, caso a query não exista altera o conteúdo dela.
    If IsNull(DLookup("Name", "MsysObjects", "Name='" & QueryName & "'")) Then
        '' cria-a ...
        CurrentDb.CreateQueryDef QueryName, SQL
    Else
        '' Caso contrário, altera o seu conteúdo.
        Let CurrentDb.QueryDefs(QueryName).SQL = SQL
    End If
End Sub


Simples e limpo! Divirta-se.

Tags: VBA, Excel, SQL, query, queries, generate, dynamic, statements, Access 2013, 


Nenhum comentário:

Postar um comentário

diHITT - Notícias