✔ 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.
Invariavelmente vez ou outra decidirá proteger suas planilhas contra o uso inapropriado por terceiros.
Alguns limitam o uso da planilha por algum tempo, não permitindo que a mesma seja aberta após um período. Outro optam radicalmente pela deleção da planilha inteira.
Como sempre pensamos...Como fazê-lo? Private Sub Workbook_Open() Dim nMess1 as String Dim nMess2 as String
Let ExpDt = #31/07/2009# Let nMess1 = "Arquivo expirado. Digite a senha para poder acessá-lo" Let nMess2 = "Acesso Negado!"
If Date > DataExpira Then Let Senha = Application.InputBox(nMess1, "Expirado")
If Senha <> 123 Then MsgBox Prompt:=nMess2, Button:=vbOKOnly + vbCritical
ThisWorkbook.Close SaveChanges:=False End If End If End Sub
Alguns dos nossos relatórios, listas, tabelas, textos, comentários podem ser dirigidos diretamente para algumas impressoras, sem que necessariamente sejam úteis, legíveis ou apropriados.
O número de bloqueios de compartilhamento de arquivos foi excedido.
Hello folks!
Vez por outra somos surpreendido por alguns erros nas nossas aplicações MS Access, os quais não fazemos ideia do que 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.
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.
Altere o <NumLocks> para 1000000 ou algo maior do que 10000 (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.
15.01.2025
Aqui está um exemplo de código para lidar com o Erro 3052 no VBA, com melhorias e comentários explicativos. O erro 3052 no Access geralmente ocorre quando o número máximo de objetos no banco de dados é excedido, ou seja, quando se atinge o limite de objetos no banco de dados (como tabelas, consultas, formulários, etc.).
Option Explicit
' Função para corrigir o Erro 3052 - Limite de objetos do banco de dados excedido
Sub FixError3052()
On Error GoTo Err_Handler
' Tentativa de acessar ou criar um novo objeto (por exemplo, uma tabela ou consulta)
Dim db As DAO.Database
Dim obj As DAO.TableDef
Set db = CurrentDb()
' Exemplo de tentativa de criação de uma nova tabela (alterar conforme necessidade)
Set obj = db.CreateTableDef("NewTable")
' Código para realizar operações com o objeto (como adicionar campos, etc.)
Mostre que suas aplicações MS Access são organizadas por inserir no título delas um texto que demonstre:
- O nome da aplicação
- A ação efetuada no momento por sua aplicação
- O nome da sua empresa
- Código do processamento sendo efetuado no momento.
Pode usar a funcionalidade para inúmeras coisas, aproveite!
' Digite num novo módulo:
Option Explicit Option Compare Database
Private Declare Function SetWindowText _ Lib "user32" _ Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Public Sub SetFormTitle(frm As Form, TitleText As String) Dim fhWnd As Long fhWnd = frm.hwnd SetWindowText fhWnd, TitleText End Sub
'Copie a SUB abaixo dentro do formulário, no evento OnOpen. Private Sub Form_Open(Cancel As Integer) SetFormTitle Me, ".: A&A - In Any Place - Título da minha aplicação!" End Sub
15.01.2025
Option Explicit
Option Compare Database
' Declaração da função API para alterar o título da janela de um formulário
Private Declare Function SetWindowText _
Lib "user32" _
Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
' Função pública para definir o título da janela do formulário
' Esta função usa a API SetWindowText para alterar o título da janela de um formulário.
' Parâmetros:
' - frm: O formulário cujo título será alterado.
' - TitleText: O texto que será exibido no título da janela do formulário.
Public Sub SetFormTitle(frm As Form, TitleText As String)
' Declara variável para armazenar o identificador da janela do formulário
Dim formHandle As Long
' Obtém o identificador da janela (HWND) do formulário
formHandle = frm.hwnd
' Chama a função da API para alterar o título da janela
SetWindowText formHandle, TitleText
End Sub
' Este evento é executado ao abrir o formulário.
' Coloque este código no evento "OnOpen" do formulário para definir o título personalizado.
Private Sub Form_Open(Cancel As Integer)
' Define o título do formulário com um texto personalizado.
' O texto pode ser alterado conforme necessário para refletir o título da aplicação ou outros detalhes.
SetFormTitle Me, ".: A&A - In Any Place - Título da minha aplicação!"