MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    Padronização na escrita de códigos (uma importante observação sobre como escrever seus códigos)

    avatar
    Convidado
    Convidado


    Padronização na escrita de códigos (uma importante observação sobre como escrever seus códigos) Empty Padronização na escrita de códigos (uma importante observação sobre como escrever seus códigos)

    Mensagem  Convidado 18/9/2013, 16:46

    Amigos.. Quando me cadastrei no Fórum foi o meu início no mundo da programação e de imediato comecei em um programa para uma instituição governamental a qual exigia um sistema robusto e livre de erros, justamente por se tratar de algo sério.

    Pois bem.. fiz o sistema e até hoje funcionou muito bem... No entanto como logo terei que me mudar de localidade não teria como estar presente caso o sistema apresentasse alguma falha, por este motivo estou fazendo uma revisão completa neste sistema com o intuito de deixá-lo auto instalável (com instalador) compilado, para adicionar referências automaticamente, bem como prever possíveis erros e tratá-los.

    O sistema já tinha sistema de tratamento de erros e outras facilidades...Mas na revisão que estou fazendo agora encontrei diversos erros que hoje no nível que me encontro não os cometo.

    Por isso no fórum sempre exortamos aos usuários a padronizarem:
    >> Nome da campo
    >> Nome de tabela
    >> nome de objeto
    >> cuidado com palavras reservadas
    >> tratamento de erros
    >> Padronização na escrita de códigos e aplicar as suas devidas explicações.

    Certo dia atrás vi um post de um colega falando como ao trabalhar em um projeto antigo que tinha feito, seus próprios códigos lhe pareciam hieroglífos
    pois como não havia adicionado comentários precisava perder tempo importante para entender seus próprios códigos.

    E assim está sendo a situação que estou passando neste projeto primeiro meu tendo que revisá-lo.

    Então darei uma dica para que possam padronizar a sua escrita de códigos
    Postarei aqui um pequeno exemplo de um código escrito que a meu ver está de fácil compreensão na leitura

    Declare no módulo sempre:
    Option Explicit

    Suponha que não tenha feito isto e declare uma variável e depois irá carregá-la com alguma informção:
    Dim strVariável   as string
    strVariavel  = "Informação"

    Observe que se não estiver declarado a expressão Option Explicit.. ao depurar seu aplicativo não exibirá o erro. Qual erro?
    veja que na declaração da variável a mesma tem acento enquanto que no carregamento a mesma não o possui.
    Se declarar a expressão Option Explicit este erro será exibido. Porque?
    Porque você declarou uma variável e não a utilizou pois está a declarando diretamente no carregamento.

    >>> Procure declara a variável de acordo com o seu tipo, Integer, Long, String, Boolean, Double etc.. (temos no fórum material sobre isto)


    >>> Procure tabular o seu código corretamente, assim terá fácil entendimento sequencial na execução do seu código sabendo
    para que cláusula o mesmo é direcionado, qual End If, qual Exit Sub, qual exit Function, qual If, qual Else


    Exemplo de uma tabulação correta:


    If X > 1 Then
         If X = 2 Then
             Select Case XXX
                  Case A
                     Seu código

                  Case B
                     Seu código
             End Select
         End If
    End If

    Exemplo de código com cabeçalho, comentários e tabulação conforme.



    '---------------------------------------------------------------------------------------
    ' Procedure     : Aplica Filtro
    ' Author        : Harysohn P. Pina (PILOTO) - Harysohn@hotmail.com
    ' Fórum         : Fórum Máximo Access -  http://maximoaccess.forumeiros.com/
    ' Date          : 17/09/2013
    ' Comentários   : Este código percorre todos as caixas texto do formulário checando:
    '                 Se a mesma está vazia ou nula, se o foco está no controle
    '                 A verificação do foco no controle é necessário pois se estiver o foco
    '                 no controle utilizamos a expressão .Text que pega imediatamente a
    '                 palavra digitada ou parte após a digitação. Caso não seja utilizada
    '                 esta propriedade o filtro pegará apenas a parte digitada excetuando
    '                 a última letra digitada na caixa texto
    '                 > Observe que carrega 6 controles para filtro sendo que no controle
    '                   em que o foco está ativo carrega na variável ColunaList o número
    '                   da coluna correspondete para utilizar na função que seleciona o
    '                   registro na listbox
    '---------------------------------------------------------------------------------------
    Function AplicaFiltro()
    Dim strSql As String
    Dim ColunaList As Integer
    Call PercorreControl
    '---------------------------------------------------
    'Parte inicial da SQL com a tabela e a claúsula WHRE
    'para o primeiro campo não checamos o comprimento
    'pois ele é necessário para a composição da SQL
    '---------------------------------------------------
    strSql = "SELECT * FROM dbo_Clientes WHERE "
    '--------------------------------------
    'verifica se o controle está com o foco
    '--------------------------------------
    If Me.ActiveControl.Name = "txt_Nome" Then
        '---------------------------------------------------------------------------------
        'Concatena a SQL na variável com a expressão .Text pois o controle está com o foco
        '---------------------------------------------------------------------------------
        strSql = strSql & "Nome Like '*" & Me.txt_nome.text & "*'"
        '----------------------------------------------------------------------------
        'Se o controle tem o foco aplica na variável ColunaList o número da coluna da
        'listBox correspondente ao controle
        '----------------------------------------------------------------------------
        ColunaList = 2
    Else
        '--------------------------------------------------------
        'Concatena a SQL na variável sem com o filtro respectivo
        '--------------------------------------------------------
        strSql = strSql & "Nome Like '*" & Filtro1 & "*'"
    End If
    '-------------------------------------------------------------------------------------------
    'Checagem do segundo campo do filtro, verificando se a caixa texto é nula ou está em branco
    '-------------------------------------------------------------------------------------------
    If Len("" & Filtro2) > 0 Then
        '--------------------------------------
        'verifica se o controle está com o foco
        '--------------------------------------
        If Me.ActiveControl.Name = "Morada" Then
            '---------------------------------------------------------------------------------
            'Concatena a SQL na variável com a expressão .Text pois o controle está com o foco
            '---------------------------------------------------------------------------------
            strSql = strSql & " And Fac_Mor Like '*" & Me.MORADA.text & "*'"
            '----------------------------------------------------------------------------
            'Se o controle tem o foco aplica na variável ColunaList o número da coluna da
            'listBox correspondente ao controle
            '----------------------------------------------------------------------------
            ColunaList = 3
        Else
            '--------------------------------------------------------
            'Concatena a SQL na variável sem com o filtro respectivo
            '--------------------------------------------------------
            strSql = strSql & " And Fac_Mor Like '*" & Filtro2 & "*'"
        End If
    End If
    '-------------------------------------------------------------------------------------------
    'Checagem do terceiro campo do filtro, verificando se a caixa texto é nula ou está em branco
    '-------------------------------------------------------------------------------------------
    If Len("" & Filtro3) > 0 Then
        '--------------------------------------
        'verifica se o controle está com o foco
        '--------------------------------------
        If Me.ActiveControl.Name = "Localidade" Then
            '---------------------------------------------------------------------------------
            'Concatena a SQL na variável com a expressão .Text pois o controle está com o foco
            '---------------------------------------------------------------------------------
            strSql = strSql & " And Fac_Local Like '*" & Me.localidade.text & "*'"
            '----------------------------------------------------------------------------
            'Se o controle tem o foco aplica na variável ColunaList o número da coluna da
            'listBox correspondente ao controle
            '----------------------------------------------------------------------------
            ColunaList = 4
        Else
            '--------------------------------------------------------
            'Concatena a SQL na variável sem com o filtro respectivo
            '--------------------------------------------------------
            strSql = strSql & " And Fac_Local Like '*" & Filtro3 & "*'"
        End If
    End If
    '-------------------------------------------------------------------------------------------
    'Checagem do quarto campo do filtro, verificando se a caixa texto é nula ou está em branco
    '-------------------------------------------------------------------------------------------
    If Len("" & Filtro4) > 0 Then
        '--------------------------------------
        'verifica se o controle está com o foco
        '--------------------------------------
        If Me.ActiveControl.Name = "Telefone" Then
            '---------------------------------------------------------------------------------
            'Concatena a SQL na variável com a expressão .Text pois o controle está com o foco
            '---------------------------------------------------------------------------------
            strSql = strSql & " And Fac_Tel Like '*" & Me.telefone.text & "*'"
            '----------------------------------------------------------------------------
            'Se o controle tem o foco aplica na variável ColunaList o número da coluna da
            'listBox correspondente ao controle
            '----------------------------------------------------------------------------
            ColunaList = 5
        Else
            '--------------------------------------------------------
            'Concatena a SQL na variável sem com o filtro respectivo
            '--------------------------------------------------------
            strSql = strSql & " And Fac_Tel Like '*" & Filtro4 & "*'"
        End If
    End If
    '-------------------------------------------------------------------------------------------
    'Checagem do quinto campo do filtro, verificando se a caixa texto é nula ou está em branco
    '-------------------------------------------------------------------------------------------
    If Len("" & Filtro5) > 0 Then
        '--------------------------------------
        'verifica se o controle está com o foco
        '--------------------------------------
        If Me.ActiveControl.Name = "Telefone2" Then
            '---------------------------------------------------------------------------------
            'Concatena a SQL na variável com a expressão .Text pois o controle está com o foco
            '---------------------------------------------------------------------------------
            strSql = strSql & " And Telefone2 Like '*" & Me.telefone2.text & "*'"
            '----------------------------------------------------------------------------
            'Se o controle tem o foco aplica na variável ColunaList o número da coluna da
            'listBox correspondente ao controle
            '----------------------------------------------------------------------------
            ColunaList = 6
        Else
            '--------------------------------------------------------
            'Concatena a SQL na variável sem com o filtro respectivo
            '--------------------------------------------------------
            strSql = strSql & " And Telefone2 '*" & Filtro5 & "*'"
        End If
    End If
    '-------------------------------------------------------------------------------------------
    'Checagem do sexto campo do filtro, verificando se a caixa texto é nula ou está em branco
    '-------------------------------------------------------------------------------------------
    If Len("" & Filtro6) > 0 Then
        '--------------------------------------
        'verifica se o controle está com o foco
        '--------------------------------------
        If Me.ActiveControl.Name = "Contribuinte" Then
            '---------------------------------------------------------------------------------
            'Concatena a SQL na variável com a expressão .Text pois o controle está com o foco
            '---------------------------------------------------------------------------------
            strSql = strSql & " And NumContrib Like '*" & Me.contribuinte.text & "*'"
            '----------------------------------------------------------------------------
            'Se o controle tem o foco aplica na variável ColunaList o número da coluna da
            'listBox correspondente ao controle
            '----------------------------------------------------------------------------
            ColunaList = 7
        Else
            '--------------------------------------------------------
            'Concatena a SQL na variável sem com o filtro respectivo
            '--------------------------------------------------------
            strSql = strSql & " And NumContrib '*" & Filtro6 & "*'"
        End If
    End If
    '---------------------------------------------------------------------------
    'Concatena a SQL para adiciona o ordenamento pelo nome do Cliente na ListBox
    '---------------------------------------------------------------------------
    strSql = strSql & " ORDER BY Nome"
    '---------------------------
    'Carrega a ListBox com a SQL
    '---------------------------
    Me.lst_1.RowSource = strSql
    '-----------------------------------------------------
    'Chama a função para selecionar o registro na lista
    'Observe que aplica o nome do controle que tem o foco
    'e a coluna correspondete à caixa texto da digitação
    '-----------------------------------------------------
    Call SelecionaRegistro(Me.ActiveControl.Name, ColunaList)
    End Function


    Sucesso!

      Data/hora atual: 28/3/2024, 21:50