TROCAR SENHA ACCESS 2000 C/ ADO
Olá pessoal,
Estou utilizando ADO (2.7) para acessar um arquivo access 2000.
Preciso colocar um recurso neste programa que troque a senha do banco de dados (um formulário, pedindo p/ o usuário digitar a senha atual, e repetir 2x a nova senha).
Utilizando DAO eu conseguia trocar a senha do arquivo access 97... Mas com ADO já procurei por tudo e nada...
Alguém sabe como?
é possivel fazer isso?
Obrigado a quem puder ajudar,
Roberto
Estou utilizando ADO (2.7) para acessar um arquivo access 2000.
Preciso colocar um recurso neste programa que troque a senha do banco de dados (um formulário, pedindo p/ o usuário digitar a senha atual, e repetir 2x a nova senha).
Utilizando DAO eu conseguia trocar a senha do arquivo access 97... Mas com ADO já procurei por tudo e nada...
Alguém sabe como?
é possivel fazer isso?
Obrigado a quem puder ajudar,
Roberto
Veja se ajuda...
Public Sub DBPassword(Conexão As ADODB.Connection)
Dim sqlExecStr As String
Dim sPass As String
On Error Resume Next
If Not Conexão.Mode = 12 Then
MsgBox "Base de dados precisa estar aberta em modo exclusivo", vbCritical
Exit Sub
End If
If MsgBox("Limpar a senha?", vbQuestion + vbYesNo, "Senha") = vbYes Then
cn.Execute "ALTER DATABASE PASSWORD '' DBPassword"
MsgBox "Senha eliminada"
Else
If MsgBox("Inserir uma senha?", vbQuestion + vbYesNo, "Senha") = vbYes Then
sPass = InputBox$("Nova senha")
cn.Execute "ALTER DATABASE PASSWORD " & sPass & " ''"
MsgBox "Senha alterada"
Else
Exit Sub
End If
End If
End Sub
Public Sub DBPassword(Conexão As ADODB.Connection)
Dim sqlExecStr As String
Dim sPass As String
On Error Resume Next
If Not Conexão.Mode = 12 Then
MsgBox "Base de dados precisa estar aberta em modo exclusivo", vbCritical
Exit Sub
End If
If MsgBox("Limpar a senha?", vbQuestion + vbYesNo, "Senha") = vbYes Then
cn.Execute "ALTER DATABASE PASSWORD '' DBPassword"
MsgBox "Senha eliminada"
Else
If MsgBox("Inserir uma senha?", vbQuestion + vbYesNo, "Senha") = vbYes Then
sPass = InputBox$("Nova senha")
cn.Execute "ALTER DATABASE PASSWORD " & sPass & " ''"
MsgBox "Senha alterada"
Else
Exit Sub
End If
End If
End Sub
Está errado, mas eu acho que não falta nada, de sua parte. Eu é que devo ter confundido você. Aliás, ontem só fiz besteiras. O código que te passei, por exemplo, funciona, mas está estranhamente obscuro.
Vou passar um código um pouco mais completo e mais claro. Para testar, gere um projeto novo, referenciando a biblioteca ADO. Em um form, insira 3 command e cole o código abaixo.
Option Explicit
'Variáveis para a conexão
Dim sCN As String
Dim oCN As ADODB.Connection
'Carrega o formulário abrindo a conexão em
'modo exclusivo de acesso
Private Sub Form_Load()
On Error GoTo FLErr:
sCN = Empty
sCN = sCN & "Provider=Microsoft.Jet.OLEDB.4.0;"
sCN = sCN & "Data Source=" & App.Path & "\DBTeste.mdb;"
sCN = sCN & "Mode=Share Deny Read|Share Deny Write;"
sCN = sCN & "Persist Security Info=False"
Set oCN = New ADODB.Connection
oCN.ConnectionString = sCN
oCN.CursorLocation = adUseClient
oCN.IsolationLevel = adXactIsolated
oCN.Mode = adModeShareExclusive
oCN.Open
FLErr:
MsgBox Err.Description, vbCritical + vbOKOnly
Err.Clear
FLExit:
End Sub
'Ao encerrar, encerra a conexão, destrói os
'objetos de acesso e limpa a memória
Private Sub Form_Unload(Cancel As Integer)
If Not oCN Is Nothing Then
If Not oCN.State = 0 Then
oCN.Close
End If
End If
Set oCN = Nothing
sCN = Empty
End Sub
'Primeiro Command - Insere senha em base de dados
Private Sub Command1_Click()
TrocaSenha oCN, "", "NovaSenha"
End Sub
'Primeiro Command - Troca senha em base de dados
Private Sub Command2_Click()
TrocaSenha oCN, "NovaSenha", "SenhaNova"
End Sub
'Terceiro Command - Remove senha de base de dados
Private Sub Command3_Click()
TrocaSenha oCN, "SenhaNova", ""
End Sub
'Função TrocaSenha - Realiza as tarefas anteriores
Public Function TrocaSenha(Conexão As ADODB.Connection, Optional SenhaAtual As String, Optional NovaSenha As String) As Boolean
On Error GoTo TSError:
If Not Conexão.Mode = adModeShareExclusive Then 'Verifica acesso exclusivo
MsgBox "Base de dados precisa estar aberta em modo exclusivo", vbCritical
GoTo TSExit:
End If
If SenhaAtual = Empty And Not NovaSenha = Empty Then
MsgBox "Inserir senha"
Conexão.Execute "ALTER DATABASE PASSWORD " & NovaSenha & " '' "
ElseIf Not SenhaAtual = Empty And NovaSenha = Empty Then
MsgBox "Excluir senha"
Conexão.Execute "ALTER DATABASE PASSWORD '' " & SenhaAtual
ElseIf SenhaAtual = Empty And NovaSenha = Empty Then
MsgBox "Nada á fazer"
ElseIf Not SenhaAtual = Empty And Not NovaSenha = Empty Then
MsgBox "Alterar senha"
Conexão.Execute "ALTER DATABASE PASSWORD " & NovaSenha & " " & SenhaAtual & " "
End If
GoTo TSExit:
TSError:
MsgBox Err.Description, vbCritical + vbOKOnly
Err.Clear
TSExit:
End Function
Na mesma pasta do projeto, insira uma base de dados de nome "DBTeste.mdb", sem senhas.
Ao executar o projeto, o primeiro botão inclui uma senha nova na base de dados, o segundo, troca essa senha e o terceiro, exclui a senha.
Esse projetinho deve facilitar o entendimento, valew?
Vou passar um código um pouco mais completo e mais claro. Para testar, gere um projeto novo, referenciando a biblioteca ADO. Em um form, insira 3 command e cole o código abaixo.
Option Explicit
'Variáveis para a conexão
Dim sCN As String
Dim oCN As ADODB.Connection
'Carrega o formulário abrindo a conexão em
'modo exclusivo de acesso
Private Sub Form_Load()
On Error GoTo FLErr:
sCN = Empty
sCN = sCN & "Provider=Microsoft.Jet.OLEDB.4.0;"
sCN = sCN & "Data Source=" & App.Path & "\DBTeste.mdb;"
sCN = sCN & "Mode=Share Deny Read|Share Deny Write;"
sCN = sCN & "Persist Security Info=False"
Set oCN = New ADODB.Connection
oCN.ConnectionString = sCN
oCN.CursorLocation = adUseClient
oCN.IsolationLevel = adXactIsolated
oCN.Mode = adModeShareExclusive
oCN.Open
FLErr:
MsgBox Err.Description, vbCritical + vbOKOnly
Err.Clear
FLExit:
End Sub
'Ao encerrar, encerra a conexão, destrói os
'objetos de acesso e limpa a memória
Private Sub Form_Unload(Cancel As Integer)
If Not oCN Is Nothing Then
If Not oCN.State = 0 Then
oCN.Close
End If
End If
Set oCN = Nothing
sCN = Empty
End Sub
'Primeiro Command - Insere senha em base de dados
Private Sub Command1_Click()
TrocaSenha oCN, "", "NovaSenha"
End Sub
'Primeiro Command - Troca senha em base de dados
Private Sub Command2_Click()
TrocaSenha oCN, "NovaSenha", "SenhaNova"
End Sub
'Terceiro Command - Remove senha de base de dados
Private Sub Command3_Click()
TrocaSenha oCN, "SenhaNova", ""
End Sub
'Função TrocaSenha - Realiza as tarefas anteriores
Public Function TrocaSenha(Conexão As ADODB.Connection, Optional SenhaAtual As String, Optional NovaSenha As String) As Boolean
On Error GoTo TSError:
If Not Conexão.Mode = adModeShareExclusive Then 'Verifica acesso exclusivo
MsgBox "Base de dados precisa estar aberta em modo exclusivo", vbCritical
GoTo TSExit:
End If
If SenhaAtual = Empty And Not NovaSenha = Empty Then
MsgBox "Inserir senha"
Conexão.Execute "ALTER DATABASE PASSWORD " & NovaSenha & " '' "
ElseIf Not SenhaAtual = Empty And NovaSenha = Empty Then
MsgBox "Excluir senha"
Conexão.Execute "ALTER DATABASE PASSWORD '' " & SenhaAtual
ElseIf SenhaAtual = Empty And NovaSenha = Empty Then
MsgBox "Nada á fazer"
ElseIf Not SenhaAtual = Empty And Not NovaSenha = Empty Then
MsgBox "Alterar senha"
Conexão.Execute "ALTER DATABASE PASSWORD " & NovaSenha & " " & SenhaAtual & " "
End If
GoTo TSExit:
TSError:
MsgBox Err.Description, vbCritical + vbOKOnly
Err.Clear
TSExit:
End Function
Na mesma pasta do projeto, insira uma base de dados de nome "DBTeste.mdb", sem senhas.
Ao executar o projeto, o primeiro botão inclui uma senha nova na base de dados, o segundo, troca essa senha e o terceiro, exclui a senha.
Esse projetinho deve facilitar o entendimento, valew?
Tópico encerrado , respostas não são mais permitidas