Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

.: Vitrine

Carregando artigos...

Views

Mostrando postagens com marcador registro. Mostrar todas as postagens
Mostrando postagens com marcador registro. Mostrar todas as postagens

VBA Access Basic - Localizando um registro - Search Records in VBA


Não existe atividade mais repetitiva num banco de dados MS Access quanto a de encontrar um registro específico. 

Existem diversas formas de fazer isso, abaixo seguem algumas delas: 

1º EXEMPLO
Dim strSQL As String
Dim rst As ADODB.Recordset
Dim lngID As Long

   strSQL = "SELECT Det.ID, Det.EntryDate, Det.UserEntry FROM UserEntrys WHERE Det.ID=" & EID
  
   Set rst = New ADODB.Recordset

     With rst
       .Open strSQL, CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly

       Do While Not rst.EOF
          Let idnumber = !ID
          Let recdate = !EntryDate
          Let recdata = !UserEntry

          rst.MoveNext
       Loop

       .Close
   End With

   Set rst = Nothing

2º EXEMPLO


Dim cn As ADODB.Connection 
Dim Str As String 
Dim rs2 As ADODB.Recordset 
Set cn = CurrentProject.Connection 
Set rs2 = New ADODB.Recordset 
Str = "SELECT CustomerID FROM YourTable WHERE CustomerID ='N'" 
rs2.Open Str, cn, adOpenStatic 
If rs2.RecordCount <> 0 Then 
     ' Found it
End If 
rs2.Close 
Set rs2 = Nothing 
cn.Close 


3º EXEMPLO


DoCmd.FindRecord "Smith",, True,, True

Tags: VBA, Access, recordset, select, SQL, rst, record, registro, find




VBA Excel - Gravando histórico das alterações na planilha - Log in Sheet


Que tal acompanhar as alterações e intervenções efetuadas nos seus Relatórios, Dashboards e Scorecards desenvolvidos com o MS Excel?

Sim, com uma simples implementação, e algum código poderá acompanhar tudo o que foi alterado na sua planilha.

Este recurso pode ser útil:

Ao acompanharmos padrões de manipulação dos dados.

Para rastrearmos as ações de um determinado usuário.

Na detecção de erros.

Se você tiver algum tempo adicional, poderá implementar essa alteração em todas as planilhas corporativas ou nas que você disponibilizar, podendo concentrar o histórico de todas num único local.

Sim, é possível fazer tais registros em arquivo texto, ou mesmo numa base de dados MS Access. 

1 - Crie uma aba History
2 - Cole o código abaixo no módulo EstaPasta_de_trabalho (ThisWorkbook).

Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range)

    ' Author:                     Date:               Contact:                 URL:

    ' André Bernardes             02/10/2012 10:58    bernardess@gmail.com     http://inanyplace.blogspot.com/
    ' documenta as alterações efetuadas nessa planilha.
    
    Dim wsHist As Worksheet, Rng As Range
    
    Set wsHist = Sheets("History")
    Let Application.ScreenUpdating = False
    Let Sheets("History").Visible = True
    
    If Sh Is wsHist Then Exit Sub

    Set Rng = wsHist.Range("A" & Rows.Count).End(xlUp).Offset(1)

    With Rng
        Let .Value = Now
        Let .Offset(, 1) = "Sheet: " & Sh.Name & " in Workbook: " & Replace(Sh.Application.Caption, "Microsoft Excel - ", "") & " no Path: " & Sh.Application.DefaultFilePath
        Let .Offset(, 2) = "Alterado por: " & Sh.Application.UserName
        Let .Offset(, 3) = Target.Address
        Let .Offset(, 4) = Target.Formula
    End With

    Let Application.ScreenUpdating = True
    Let Sheets("History").Visible = False
End Sub

3 - Salve a planilha e altere o conteúdo de uma célula.


Tags: VBA, Excel, Log, Sheet, Info, histórico, registro, histórico, alteração, planilha

VBA Access - Erro 3052

Inline image 1
Vez por outra somos surpreendidos por alguns erros nas nossas aplicações MS Access, e em alguns momentos sequer fazemos ideia do que estes sejam (vá se acostumando).

Um dos erros que nos surpreendem, pegando-nos desprevenidos, é o erro 3052 ele aparece quando o número de bloqueios de compartilhamento de arquivos foi excedido, o valor padrão é 9.500. Sem nos apercebermos disso, excedemos o número máximo de bloqueios permitidos em um recordset, este limite é especificado pela definição MaxLocksPerFile no Registro do sistema.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet
4.0\MaxLocksPerFile

Como eliminá-lo? Aumente a entrada de registro MaxLocksPerFile, o valor padrão pode ser alterado por meio da edição do Registro com Regedit.exe ou com o método SetOption.

Application.DBEngine.SetOption dbMaxLocksPerFile, <NumLocks>

Altere o <NumLocks> para 1.000.000 ou algo maior do que 10.000 (um milhão poupará você de aplicar esse truque mais vezes) e o erro irá embora. Certifique-se de colocar a linha acima na sua subroutina, e evoque-a a partir do seu FORM principal.

Outros fatores que podem fazer o seu aplicativo atingir este limite são:

* quantidade de memória disponível
* tamanho das linhas no recordset
* restrições no sistema operacional da rede 


Mais detalhes: 
Inicializando o driver de mecanismo de banco de dados do Microsoft Jet 3.5
Personalizando configurações do Registro do Windows para Microsoft Jet


Pois é, desse erro você já se livrou . . . Mas . . . outros virão...


Tags: VBA, Access, error, erro, err, run-time, 3052, Jet 3.5, Jet, registry, registro

VBA Access - Encontrando um registro...How to Find a Record Efficiently


VBA Access - Encontrando um registro...How to Find a Record Efficiently



Não existe atividade mais repetitiva num banco de dados MS Access quanto a de encontrar um registro específico. Existem diversas formas de fazer isso, abaixo segue uma delas. 

Divirtam-se!

Dim strSQL As String
Dim rst As ADODB.Recordset
Dim lngID As Long

   strSQL = "SELECT Det.ID, Det.EntryDate, Det.UserEntry FROM UserEntrys WHERE Det.ID=" & EID
  
   Set rst = New ADODB.Recordset

     With rst
       .Open strSQL, CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly

       Do While Not rst.EOF
          Let idnumber = !ID
          Let recdate = !EntryDate
          Let recdata = !UserEntry

          rst.MoveNext
       Loop

       .Close
   End With

   Set rst = Nothing


  15.01.2025 
Sub GetUserEntryDetails(EID As Long)
    ' Declaração das variáveis
    Dim strSQL As String
    Dim rst As ADODB.Recordset
    Dim idnumber As Long
    Dim recdate As Date
    Dim recdata As String

    ' Monta a string SQL para consultar os dados baseados no EID
    strSQL = "SELECT Det.ID, Det.EntryDate, Det.UserEntry FROM UserEntrys Det WHERE Det.ID = " & EID

    ' Cria uma nova instância do Recordset
    Set rst = New ADODB.Recordset

    ' Abre o recordset com a consulta SQL
    With rst
        ' Abrindo o recordset com as opções adequadas
        .Open strSQL, CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly

        ' Verifica se o recordset contém dados
        If Not .EOF Then
            ' Itera sobre os registros encontrados
            Do While Not .EOF
                ' Atribui os valores dos campos para as variáveis
                idnumber = !ID
                recdate = !EntryDate
                recdata = !UserEntry

                ' Aqui você pode fazer o processamento desejado com os dados
                ' Por exemplo, exibir ou armazenar os valores recuperados

                ' Move para o próximo registro no recordset
                .MoveNext
            Loop
        Else
            ' Caso não haja registros, pode-se adicionar uma mensagem ou outra ação
            Debug.Print "Nenhum registro encontrado para o ID especificado."
        End If

        ' Fecha o recordset após o uso
        .Close
    End With

    ' Libera os recursos alocados pelo recordset
    Set rst = Nothing
End Sub

 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 de Livros nut 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


 PUDIM PROJECT 

eBook - PT - PUDIM PROJECT 2024 - Python Volume 01 - Funções Essenciais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 02 - Funções Essenciais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 03 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes


eBook - PT - PUDIM PROJECT 2024 - Python Volume 04 - Funções para Automatização - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 05 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 06 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes


eBook - PT - PUDIM PROJECT 2024 - Python Volume 07 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 08 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 09 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes


eBook - PT - PUDIM PROJECT 2024 - Python Volume 10 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 11 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes

VBA Tips - Registro do LOG de acesso às aplicações





É muito comum que o desenvolvedor queira registrar o número de acessos, bem como acompanhar quem está acessando o seus arquivo através de um .LOG.


Isso pode ser facilmente implementado por adicionarmos uma pequena função dentro do FORM Splash (O primeiro FORM a ser aberto) da sua aplicação. Você pode alterar o código para que grave esses arquivos .LOG em um diretório (ou servidor de arquivos) escondido e acompanhar até mesmo remotamente os acessos à sua aplicação.

NO VBE DENTRO DO FORM SPLASH



Private Sub Form_Open(Cancel As Integer)
' Author: Date: Contact:
' André Bernardes 18/06/2008 08:21 bernardess@gmail.com
' Sub de abertura do formulário.
' Rastreador inserido em 25.09.2008 - 10:52 
.LOG
.

Dim ThisFormName As String

Let ThisFormName = Me.Name

Call Rastrear ' Registra acesso no Log.
Call ImagesPath
Call SetMoldura("Logando à aplicação", " . . . ")
HideAccessCloseButton ' Elimina o botão fechar na janela da aplicação do Windows.

Me.LblTime.Caption = Now()

Call AssenteAcesso("OF", ThisFormName, "Sys: Splash de abertura.")
Call SetMoldura("", ".: A&A - In Any Place")
End Sub


A FUNÇÃO QUE DEVE COLAR DENTRO DO SEU MÓDULO PARA QUE O REGISTRO SEJA EFETUADO É:


Function Rastrear()
' Author: Date: Contact:
' André Bernardes 25/09/2008 10:01 bernardess@gmail.com
' Cria arquivo .LOG
 
Open Application.CurrentProject.Path & "\" & Left(Application.CurrentProject.Name, Len(Application.CurrentProject.Name) - 4) & ".log" For Append As #1
Print #1, " "
Print #1, "User: " & atCNames(1) & "- " & Trim(atCNames(2)), Now()
Print #1, " In: " & CodeProject.FullName
Print #1, " "
Close #1
End Function



Se você tiver um pouco de criatividade poderá registrar todos os acessos de todos as aplicações (MS Access, MS Excel, MS Word, MS PowerPoint, etc...) no mesmo arquivo .LOG analisando-o quando desejar.


A infinidade de possibilidades de utilização dessa solução são infinitas, então divirta-se.



diHITT - Notícias