VBA - Visual Basic for Applications | Polimorfismo

VBA - Visual Basic for Applications | Polimorfismo

O que é Polimorfismo?


É um conceito de programação orientada a objetos que permite definir diferentes versões de objetos que compartilham algumas das mesmas características. Na linguagem, um exemplo seriam dois carros diferentes. Um Lamborghini é um carro, assim como um Ford KA. Ambos têm as características comuns de todos os carros, mas não são o mesmo carro e têm carrocerias e motores diferentes, mas essas carrocerias e motores realizam tarefas semelhantes, como mudança de marcha, cores diferentes e partida.


Em termos de VBA você pode criar um objeto Class que define quais características e métodos cada tipo de objeto irá compartilhar. Num exemplo de programação mais prático, digamos, uma classe FormAuditor desenvolvida para enviar mensagens para algum lugar. Talvez seja para uma tabela de banco de dados ou talvez para um arquivo de log, ou talvez até mesmo mostrando a lista de alterações em um controle de formulário.


Portanto, cada um desses diferentes métodos de escrita poderia ser um objeto separado, mas não sabemos qual deles o usuário desejará usar. Para fornecer todas as três opções de forma intercambiável, poderíamos criar uma classe simples de esqueleto AuditorOutput como esta:


 EXEMPLO ORIGINAL: 

 

'AuditorOutput Class

Option Compare Database

Option Compare Explicit


Public Sub WriteAuditorOutput(activeFormAuditor As FormAuditor)

End Sub


'AuditorOutput Class


Option Compare Database

Option Explicit ' Obrigatório declarar explicitamente todas as variáveis

 

 SCRIPT  APRIMORADO PARA IMPLEMENTAR: 

 

Public Sub WriteAuditorOutput(activeFormAuditor As FormAuditor)

    ' Esta sub-rotina recebe um objeto FormAuditor como parâmetro e escreve a saída do auditor

    

    ' Declarando variáveis

    Dim xlApp As Object

    Dim xlBook As Object

    Dim ws As Object

    Dim db As Database

    Dim strSQL As String

    Dim strPath As String

    

    ' Verifica se foi fornecido um objeto válido FormAuditor

    If Not IsNull(activeFormAuditor) Then

        ' Define o caminho para o arquivo Excel

        strPath = "C:\Caminho\Para\Seu\Arquivo\Excel.xlsx"

        

        ' Configura a aplicação Excel

        Set xlApp = CreateObject("Excel.Application")

        xlApp.Visible = True ' Torna a aplicação Excel visível

        

        ' Cria um novo livro (workbook) no Excel

        Set xlBook = xlApp.Workbooks.Add

        

        ' Obtém uma referência ao banco de dados do Access

        Set db = CurrentDb

        

        ' Executa uma consulta SQL para recuperar dados do formulário do Access

        strSQL = "SELECT * FROM " & activeFormAuditor.RecordSource

        Set ws = xlBook.Sheets(1) ' Obtém a referência à primeira planilha do Excel

        

        ' Copia os dados do formulário do Access para a planilha do Excel

        With ws

            .Cells(1, 1).CopyFromRecordset activeFormAuditor.Recordset ' Copia os dados começando da célula A1

        End With

        

        ' Salva o livro do Excel no caminho especificado

        xlBook.SaveAs strPath

        

        ' Fecha objetos do Excel

        xlBook.Close

        xlApp.Quit

        

        ' Libera referências de objetos

        Set ws = Nothing

        Set db = Nothing

        Set xlBook = Nothing

        Set xlApp = Nothing

    Else

        MsgBox "O objeto FormAuditor fornecido é inválido.", vbExclamation, "Erro"

    End If

End Sub


Agora, para utilizar esta classe como uma interface de objeto (a definição dos elementos públicos da série de objetos), faríamos algo assim para a classe AO_ToDatabase e a classe AO_ToFile:


 EXEMPLO ORIGINAL: 

 

'AO_ToDatabase Class

Option Compare Database

Option Compare Explicit


Implements AuditorOutput


Private Sub AuditorOutput_WriteAuditorOutput(activeFormAuditor As FormAuditor)

   ' Add Code here to loop over FormAuditor information and save to a database

End Sub


 SCRIPT  APRIMORADO PARA IMPLEMENTAR: 

 'AO_ToDatabase Class


Option Compare Database

Option Explicit ' Obrigatório declarar explicitamente todas as variáveis


Implements AuditorOutput ' Implementa a interface AuditorOutput


Private Sub AuditorOutput_WriteAuditorOutput(activeFormAuditor As FormAuditor)

    ' Este método é chamado para escrever a saída do auditor para um banco de dados

    

    ' Adicione aqui o código para iterar sobre as informações do FormAuditor e salvar no banco de dados

    ' Por exemplo:

    

    ' Declarando variáveis

    Dim db As Database

    Dim strSQL As String

    

    ' Verifica se o objeto FormAuditor fornecido é válido

    If Not IsNull(activeFormAuditor) Then

        ' Obtém uma referência ao banco de dados do Access

        Set db = CurrentDb

        

        ' Constrói a consulta SQL para inserir os dados do FormAuditor no banco de dados

        strSQL = "INSERT INTO NomeDaTabela (Campo1, Campo2, Campo3) VALUES ('" & activeFormAuditor.Campo1 & "', '" & activeFormAuditor.Campo2 & "', '" & activeFormAuditor.Campo3 & "')"

        

        ' Executa a consulta SQL

        db.Execute strSQL

        

        ' Libera a referência ao objeto Database

        Set db = Nothing

    Else

        MsgBox "O objeto FormAuditor fornecido é inválido.", vbExclamation, "Erro"

    End If

End Sub


E neste caso a classe AO_ToFile seria estruturada da mesma forma, mas com código para salvar as informações em um arquivo:


 EXEMPLO ORIGINAL: 

 

'AO_ToFile Class

Option Compare Database

Option Compare Explicit


Implements AuditorOutput


Private Sub AuditorOutput_WriteAuditorOutput(activeFormAuditor As FormAuditor)

   ' Add Code here to loop over FormAuditor information and save to a file

End Sub


 SCRIPT  APRIMORADO PARA IMPLEMENTAR: 

'AO_ToFile Class


Option Compare Database

Option Explicit ' Obrigatório declarar explicitamente todas as variáveis


Implements AuditorOutput ' Implementa a interface AuditorOutput


Private Sub AuditorOutput_WriteAuditorOutput(activeFormAuditor As FormAuditor)

    ' Este método é chamado para escrever a saída do auditor para um arquivo

    

    ' Adicione aqui o código para iterar sobre as informações do FormAuditor e salvar em um arquivo

    ' Por exemplo:

    

    ' Declarando variáveis

    Dim fs As Object

    Dim f As Object

    Dim filePath As String

    Dim i As Integer

    

    ' Verifica se o objeto FormAuditor fornecido é válido

    If Not IsNull(activeFormAuditor) Then

        ' Define o caminho do arquivo

        filePath = "C:\Caminho\Para\Seu\Arquivo\output.txt"

        

        ' Cria um objeto FileSystem para manipular arquivos

        Set fs = CreateObject("Scripting.FileSystemObject")

        

        ' Cria ou abre o arquivo para escrita

        Set f = fs.OpenTextFile(filePath, 8, True)

        

        ' Escreve as informações do FormAuditor no arquivo

        With activeFormAuditor

            For i = 0 To .Recordset.Fields.Count - 1

                ' Escreve cada campo do FormAuditor no arquivo

                f.WriteLine .Recordset.Fields(i).Name & ": " & .Recordset.Fields(i).Value

            Next i

        End With

        

        ' Fecha o arquivo

        f.Close

        

        ' Libera a referência ao objeto FileSystem

        Set fs = Nothing

    Else

        MsgBox "O objeto FormAuditor fornecido é inválido.", vbExclamation, "Erro"

    End If

End Sub


Agora, no código onde você deseja configurar um FormAuditor e gerar saída para um ou ambos, o código ficaria assim:


 EXEMPLO ORIGINAL: 

 

'Code to use the classes via polymorphism

Dim LogToSomething As AuditorOutput


'Let's say we have a global variable called FormAuditorInstance that has

'collected information on a form and is a FormAuditor object

Set LogToSomething = New AO_ToDatabase

LogToSomething.WriteAuditorOutput FormAuditorInstance


 SCRIPT APRIMORADO PARA IMPLEMENTAR: 

 ' Código para usar as classes via polimorfismo


Dim LogToSomething As AuditorOutput ' Declaração de variável do tipo AuditorOutput


' Suponha que temos uma variável global chamada FormAuditorInstance que coletou informações em um formulário e é um objeto FormAuditor


Set LogToSomething = New AO_ToDatabase ' Instancia um objeto do tipo AO_ToDatabase e atribui à variável LogToSomething


LogToSomething.WriteAuditorOutput FormAuditorInstance ' Chama o método WriteAuditorOutput do objeto LogToSomething, passando FormAuditorInstance como parâmetro


E se você quisesse usar uma implementação diferente de AuditorOutput, você poderia simplesmente especificar a linha Set para usar esse objeto:


Set LogToSomething = New AO_ToFile


  Clique aqui e nos contate via What's App para avaliarmos seus projetos 

Envie seus comentários e sugestões e compartilhe este artigo!
brazilsalesforceeffectiveness@gmail.com


 Série Donut Project 
DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes


 Clique nas capas abaixo e compre também: 

DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)


Série Top 10 Funções: Top 10 Funções VBA para o Microsoft Excel (Série Top 10 Funções - Microsoft Excel)


eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes

eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes

eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes

VBA - Visual Basic for Applications | Debugando Passo a Passo pelo Código

VBA - Visual Basic for Applications | Debugando Passo a Passo pelo Código


Quando você está escrevendo ou mantendo um código, é muito útil poder percorrer o código uma linha por vez.


Isso pode ajudá-lo a ver o que cada linha de código está fazendo e a entender blocos complicados de código.


À medida que cada linha de código é executada, a ação apropriada é executada e a linha correspondente é destacada em amarelo.


Pressionar F8 executará o código uma linha por vez.


Sub DebuggingThis()

    ' Sub-rotina para demonstrar debugging

    

    ' Declaração das variáveis

    Dim iNumber As Integer

    Dim sText As String

    

    ' Inicializa iNumber com o valor 10

    iNumber = 10

    

    ' Multiplica iNumber por 2

    iNumber = iNumber * 2

    

    ' Converte o valor de iNumber para uma string e armazena em sText

    sText = CStr(iNumber)

    

    ' Exibe uma caixa de mensagem com o valor de sText

    Call MsgBox(sText)

End Sub


Sub MyRoutine()

    ' Sub-rotina para demonstrar um loop

    

    ' Declaração da variável de controle do loop

    Dim iLoop As Integer

    

    ' Loop de 1 a 10

    For iLoop = 1 To 10

        ' Imprime o valor de iLoop no janela de depuração (Immediate Window) do VBA

        Debug.Print iLoop

    Next iLoop

End Sub


Imediatamente antes de uma linha contendo um ponto de interrupção ser executada, a linha aparecerá com um fundo amarelo.


Percorrendo o código - capturas de tela simples da barra amarela


Depois que seu código for interrompido, por um ponto de interrupção ou percorrendo seu código, você poderá retomar a execução pressionando (Executar > Continuar (ou F5. Para encerrar a macro, pressione (Executar > Parar ??).


Isso faz com que a execução pare em a linha após a chamada para este procedimento.


Percorra com o cursor


Isso permite executar o código e entrar no modo de interrupção na linha que contém o cursor. Isso é semelhante a colocar um ponto de interrupção em uma linha, embora "correr para o cursor" seja temporário e não terá efeito na próxima vez que o código for executado.


Alterando a ordem de execução das instruções: enquanto a execução do seu código está interrompida, você pode controlar a sequência de execução das instruções dentro de um procedimento. Para definir a próxima instrução a ser executada, posicione o ponto de inserção em qualquer lugar do código e vá (Debug > Definir próxima instrução) ou pressione (Ctrl + F9). Alternativamente, basta arrastar a seta amarela para a linha correspondente.



Depuração excessiva


Sempre que você estiver fazendo muita depuração, vale a pena salvar seus módulos (ou seja, exportá-los) a cada 10/15 minutos, pois o VBA tende a travar se você estiver realizando sessões de depuração gigantescas.



Importante


A linha destacada em amarelo é a próxima linha a ser executada.


Todas as macros podem ser interrompidas a qualquer momento pressionando (Ctrl + Break).


Se um procedimento parecer estar travado, normalmente você pode interrompê-lo pressionando (Ctrl + Break).


  Clique aqui e nos contate via What's App para avaliarmos seus projetos 

Envie seus comentários e sugestões e compartilhe este artigo!
brazilsalesforceeffectiveness@gmail.com


 Série Donut Project 
DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes


 Clique nas capas abaixo e compre também: 

DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)


Série Top 10 Funções: Top 10 Funções VBA para o Microsoft Excel (Série Top 10 Funções - Microsoft Excel)


eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes

eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes

eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes

Desenvolvimento de Soluções Personalizadas com o Pentaho

Desenvolvimento de Soluções Personalizadas com o Pentaho

Entendo a importância do desenvolvimento de soluções personalizadas para atender às demandas específicas das organizações. Com o Pentaho, uma plataforma de BI e ETL de código aberto, esse desenvolvimento sob medida se torna mais acessível. Desenvolver soluções personalizadas com o Pentaho envolve compreender profundamente as necessidades do negócio e as nuances das fontes de dados envolvidas. Essa abordagem permite criar soluções que não só fornecem informações precisas, mas também impulsionam a tomada de decisões informadas.


 Sobre o Pentaho: 

Quais são as vantagens do Pentaho? O que é Pentaho? Integração do Pentaho com Fontes de Dados Não Tradicionais

Implementação do Pentaho em Empresas de Pequeno e Médio Porte Visualização de Dados Avançada com o Pentaho Quais são os Principais Componentes da Solução Pentaho?

O que faz o Pentaho? Pentaho e Big Data: Análise e Processamento de Grandes Volumes de Dados Desenvolvimento de Soluções Personalizadas com o Pentaho



A flexibilidade do Pentaho abre portas para uma vasta gama de casos de uso, desde a criação de relatórios ad hoc até análises avançadas de dados. Desenvolver soluções personalizadas requer uma compreensão profunda das ferramentas de design visual oferecidas pelo Pentaho, como o Pentaho Data Integration (PDI) e o Pentaho Report Designer. Essas ferramentas ajudam a criar fluxos de trabalho ETL e relatórios de maneira eficiente e personalizada para atender às necessidades específicas da organização.


Uma vantagem de desenvolver soluções personalizadas com o Pentaho é a comunidade ativa de usuários e desenvolvedores. Esta comunidade oferece uma vasta gama de plugins e extensões que podem ser usados para estender a funcionalidade do Pentaho e adaptá-lo às necessidades do projeto. Além disso, a comunidade também fornece suporte valioso, incluindo fóruns de discussão e documentação, que podem ajudar a acelerar o processo de desenvolvimento e resolver problemas comuns.


Ao desenvolver soluções personalizadas com o Pentaho, é essencial adotar práticas de desenvolvimento ágil e seguir os princípios de design orientado a serviços e arquitetura modular. Isso permite uma rápida iteração e adaptação às mudanças nos requisitos de negócios e nas fontes de dados. Além disso, a implementação de testes automatizados e a documentação abrangente garantem a qualidade e a manutenibilidade das soluções desenvolvidas.


A segurança dos dados é uma consideração crítica ao desenvolver soluções personalizadas com o Pentaho. É importante implementar controles de acesso adequados, criptografia de dados e auditoria para proteger informações confidenciais e garantir conformidade com regulamentações de privacidade, como GDPR e HIPAA. Ao lidar com dados sensíveis, práticas de anonimização e mascaramento também devem ser aplicadas para proteger a privacidade dos usuários.


Em resumo, o desenvolvimento de soluções personalizadas com o Pentaho oferece uma maneira poderosa de extrair insights valiosos dos dados e impulsionar a tomada de decisões informadas. Ao seguir as melhores práticas de desenvolvimento e colaborar de perto com as partes interessadas, os DBAs e desenvolvedores podem criar soluções sob medida que atendam às necessidades exclusivas de suas organizações e impulsionem o sucesso empresarial.


  Clique aqui e nos contate via What's App para avaliarmos seus projetos 

Envie seus comentários e sugestões e compartilhe este artigo!
brazilsalesforceeffectiveness@gmail.com


 Série Donut Project 
DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes


 Clique nas capas abaixo e compre também: 

DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)


Série Top 10 Funções: Top 10 Funções VBA para o Microsoft Excel (Série Top 10 Funções - Microsoft Excel)


eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes

eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes

eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes
diHITT - Notícias