TROCAR SENHA ACCESS 2000 C/ ADO

USUARIO.EXCLUIDOS 23/04/2004 03:19:28
#22091
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
USUARIO.EXCLUIDOS 23/04/2004 07:28:37
#22107
Resposta escolhida
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
USUARIO.EXCLUIDOS 24/04/2004 08:12:09
#22352
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?
Tópico encerrado , respostas não são mais permitidas