FIREBIRD TESTAR CONEXAO

ADRIANOM 29/09/2010 21:04:40
#354153
Olá!
Como meu tópico anterior ficou flutuando sem resposta, o exclui e tento remodelar a minha dúvida.
Construí um form onde irá definir o diretório que se encontra o meu banco de dados DADOS.FDB
O meu cliente poderá escolher dois tipos de conexões: Servidor e Estação.

No caso de escolha de Servidor a conexão ficará definida assim: 127.0.0.1:D:\Visual Basic\Projeto\Dados.fdb
No caso de escolha de Estação a conexão ficará definida assim: 192.168.0.100:D:\Visual Basic\Projeto\Dados.fdb
Isso será salvo em um INI.

Só que antes de confirmar a localização do banco de dados, gostaria de efetuar um teste de localização para ter certeza da comunicação com o banco sem problemas....
Ae no fórum, pesquisei e achei este código do meu amigo TECLA....justamente com o que desejo...


# Função
Public Function TestarConexao(Path As String) As Boolean
Dim CAMINHO As String
[ô]-------------------------
[ô]Testar conexão com o Path
[ô]-------------------------
On Error GoTo erro
Dim con2 As ADODB.Connection
Set con2 = New ADODB.Connection
DoEvents
con2.ConnectionTimeout = 10

[ô] txtCaminho.text = 127.0.0.1:D:\Visual Basic\Projeto\Dados.fdb
CAMINHO = txtCaminho.text

con2.Open [Ô]Driver=Firebird/InterBase(r) driver;[Ô] & _
[Ô]Uid=SYSDBA;[Ô] & _
[Ô]Pwd=masterkey;[Ô] & _
[Ô]DbName=[Ô] & Path

con2.Close
Set con2 = Nothing
TestarConexao = True
Exit Function

erro:
TestarConexao = False
End Function


# Chamada
If TestarConexao([Ô]C:\Sys\Base.FDB[Ô]) = True Then
MsgBox [Ô]Conexão estabelecida com sucesso[Ô], , [Ô]Sys[Ô]
Else
MsgBox [Ô]Ocorreu um erro ao tentar se comunicar com base de dados Firebird.[Ô], , [Ô]Sys[Ô]
End If



O que acontece, é que não utilizo o esquema de conexão como o sugerido no código....

 con2.Open [Ô]Driver=Firebird/InterBase(r) driver;[Ô] & _
[Ô]Uid=SYSDBA;[Ô] & _
[Ô]Pwd=masterkey;[Ô] & _
[Ô]DbName=[Ô] & Path


o jeito que conecto ao banco de dados é o seguinte:


[ô] txtCaminho.text = 127.0.0.1:D:\Visual Basic\Projeto\Dados.fdb
CAMINHO = txtCaminho.text

CONEXAO = [Ô]Provider=SIBPROvider.2; SIB:Character Set =WIN1252; Data Source=[Ô] & CAMINHO & [Ô];User ID=[Ô] & [Ô]SYSDBA[Ô] & [Ô];Password=[Ô] & [Ô]masterkey[Ô]


Tentei alterar para testar deste jeito e fica dando erro.... Outra coisa....


# Chamada
If TestarConexao(CAMINHO) = True Then
MsgBox [Ô]Conexão estabelecida com sucesso[Ô], , [Ô]Sys[Ô]
Else
MsgBox [Ô]Ocorreu um erro ao tentar se comunicar com base de dados Firebird.[Ô], , [Ô]Sys[Ô]
End If


Não estou entendendo... alguém pode me ajudar... caso tenham outra função pode ser tb... mas quero que realize um teste de conexão rápida e avise o usuário que está ok...
Abraços...
TECLA 29/09/2010 22:01:24
#354157
Resposta escolhida
Qual é a descrição do erro?
Poste a sua rotina pós-alteração.
ADRIANOM 29/09/2010 22:11:48
#354162
Amigo TECLA.. agradeço ajuda... mas o seu código está correto.. é o doidão aqui que fez a modificação errada...

Agradeço..a iniciativa...

Posto o código escrito a 6 meses atras pelo TECLA e modificado para meu uso....
  
[ô]Crédito ao VBManíaco TECLA

Option Explicit

Dim CONEXAO As String
Dim CAMINHO As String
Dim CNN As ADODB.Connection

Public Function TestarConexao(CAMINHO As String) As Boolean
[ô]-------------------------
[ô]Testar conexão com o Path
[ô]-------------------------
On Error GoTo erro

Set CNN = New ADODB.Connection
DoEvents
CAMINHO = txtCaminho.Text [ô] caminho com o banco de dados também
CONEXAO = [Ô]Provider=SIBPROvider.2; SIB:Character Set =WIN1252; Data Source=[Ô] & CAMINHO & [Ô];User ID=[Ô] & [Ô]SYSDBA[Ô] & [Ô];Password=[Ô] & [Ô]masterkey[Ô]
CNN.ConnectionTimeout = 10
CNN.Open CONEXAO
CNN.CursorLocation = adUseClient
CNN.Close
Set CNN = Nothing
TestarConexao = True
Exit Function

erro:
TestarConexao = False
End Function

Private Sub cmdTestar_Click()
If TestarConexao(CAMINHO) = True Then
MsgBox [Ô]Conexão estabelecida com sucesso![Ô], vbInformation, [Ô]Banco de Dados[Ô]
Else
MsgBox [Ô]Não foi possível estabelecer conexão.[Ô], vbCritical, [Ô]Banco de Dados[Ô]
End If
End Sub

TECLA 29/09/2010 22:13:23
#354163
OK.
Se o problema foi resolvido, não esqueça de encerrar o tópico.
Tópico encerrado , respostas não são mais permitidas