ACESSAR BD FIREBIRD REDE

ADRIANOM 17/08/2011 20:17:11
#381934
Ah! eu uso a SIBPRO2.dll copiada no diretório c:\Windows\System32 e devidamente registrada...
ARNALDOCRUZ 18/08/2011 20:56:39
#382030
camarada a coisa + simples do mundo

vc pode fazer por arquivo ini,txt

a ROTINA ABAIXO TANTO PODE SER USADO COM O PROVEDOR IBOLE COMO COM OUTRO QUALQUER PROVEDOR

Na SubMain

[ô]Veirifico a existencia do arquivo config dll
[ô]Nele vai está o IP do servido e o caminho do banco de dados


Caminho = Dir([Ô]C:\PastadoBacodedados\Config.dll[Ô]) --->a extensão dll foi salva pelo bloco de notas
If Caminho = [Ô][Ô] Or IsNull(Caminho) Then
Call AcharMaquina
If AchouMaquina = 1 Then
MsgBox [Ô] Não achou a maquia na rede[Ô]
End
Exit Sub
End If
End If

em um modulo

Private Declare Function GetComputerName Lib [Ô]kernel32[Ô] Alias [Ô]GetComputerNameA[Ô] (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function GetUserName Lib [Ô]advapi32.dll[Ô] Alias [Ô]GetUserNameA[Ô] (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function NetRemoteTOD Lib [Ô]NETAPI32.DLL[Ô] (ByVal server As String, Buffer As Any) As Long

[ô]Declare as variaveis abaixo como publica

AchouMaquina
IPM

Function AcharMaquina()
Dim sHostName As String
If PL_RedeInitialize() Then
sHostName = [Ô]SERVANT[Ô]
IPM = GetIPFromHostName(sHostName)
End If

If IPM = [Ô][Ô] Or IsNull(IPM) Then
AchouMaquina = 1 [ô] Variavel Publica
Else
AchouMaquina = 0
CriaArquivo
End If
End Function

Function CriaArquivo()
Dim Texto1 As String
Dim Texto2 As String
Dim Texto3 As String
Arq = [Ô]Config.dll[Ô]
Caminho = ([Ô]C:\Bvizinho[Ô])
If Valeu = 0 Then

Else
NMaq = Get_Computer_Name
For i = 1 To Len(NMaq)
CHAR1 = Asc(Mid(NMaq, i, 1))
If CHAR1 <> 0 Then
Char = Char & Mid(NMaq, i, 1)
End If
Next
NMaq = Char

Texto1 = NMaq
Texto2 = IPM
Texto3 = [Ô]C:\PastadoBancodeDados\Bancodedados.FDB[Ô]
Open [Ô]C:\PastaondeVaificaroarquivoCondig\Config.dll[Ô] For Output As #1
Print #1, Texto1
Print #1, Texto2
Print #1, Texto3
Close #1
End If
End Function

Public Function FctAbrirConeccao()
Dim Caminho As String
Dim Arq As String
Dim ArquivoDados As String
Dim nFic As Long
Dim Texto1 As String
Dim Texto2 As String
Dim Texto3 As String
Dim vl As Long
Dim Comc As String
Dim NMaq As String
Dim Char As String
Dim CHAR1 As Integer
On Error GoTo tbl
Open [Ô]C:\PastaOndefoigravadooArquivoConfig\Config.dll[Ô] For Input As #1
Do While Not EOF(1)
If vl = 0 Then
Line Input #1, Texto1
CompuAtivo = Texto1 [ô]Nome do servidor
ElseIf vl = 1 Then
Line Input #1, Texto2 [ô]IP do servidor
ElseIf vl = 2 Then
Line Input #1, Texto3 [ô]Caminho do BAnco
End If
vl = vl + 1
Loop
Close #1
Comc = Texto2 & [Ô]:[Ô] & Texto3
NMaq = Get_Computer_Name [ô]PEGO O NOME DA MAQUINA
For i = 1 To Len(NMaq)
CHAR1 = Asc(Mid(NMaq, i, 1))
If CHAR1 <> 0 Then
Char = Char & Mid(NMaq, i, 1)
End If
Next
NMaq = Char
Set Cnn = New ADODB.Connection
If UCase(NMaq) <> [Ô]NOME DO SERVIDOR[Ô] Then [ô] ENTÃO é REDE
Cnn.CursorLocation = adUseClient
Cnn.Open [Ô]Provider=IBOLE.PROVIDER;Data Source=[Ô] & Comc & [Ô];User ID=[Ô] & [Ô]SYSDBA[Ô] & [Ô];Password=[Ô] & [Ô]masterkey[Ô]
Principal = 1
Else[ô] ENTÃO é LOCAL
Comc = [Ô]LocalHost[Ô] & [Ô]:[Ô] & Texto3
Cnn.CursorLocation = adUseClient
Cnn.Open [Ô]Provider=IBOLE.PROVIDER;Data Source=[Ô] & Comc & [Ô];User ID=[Ô] & [Ô]SYSDBA[Ô] & [Ô];Password=[Ô] & [Ô]masterkey[Ô]
Principal = 0
End If
CompuAtivo = NMaq
Exit Function
tbl:
Err.Clear
MsgBox [Ô]a Conexão com a base de dados não pode ser estabelicida verifique o porque e clique no menu na opção Reconectar[Ô], vbCritical, [Ô]Aviso do sistema[Ô]
Close #1
End
End Function
ADRIANOM 18/08/2011 23:34:27
#382044
ArnaldoCruz, será que pode me enviar este código acima, em um exemplo vb6 + fb ... tentei usar o código e deu erro... as vezes não interpretei da maneira correta sugerida por ti!
Agradeço a compreensão e paciência!
LLAIA 19/08/2011 12:16:23
#382069
Citação:

:
Como faço, passo-a-passo, para acessar um banco de dados firebird na rede?

Eu criei meu banco de dados, copiei o arquivo GDI32.dll para a pasta, no servidor, c:windows\system32\gdi32.dll - isso no windows XP Professional SP3.




A dll correta é a GDS32.dll, não GDI32.dll.

Vc precisa colocar a GDS32.dll e a SIBPRO2.dll na pasta system32 do windows e registrar, e a string de conexão é como o EDERMIR disse:

Citação:

No FIREBIRD você deve colocar o IP DO SERVIDOR seguido de DOIS PONTOS seguido do DRIVE DO SERVIDOR ONDE ESTÁ O FDB, o CAMINHO até o banco e o NOME DO BANCO.



Se não estou enganado a GDS32.dll não registra mas isso não é problema.
EDERMIR 19/08/2011 22:50:29
#382132
Citação:

:
Tem que copiar aquela dll criada no ibexpert para todas as maquinas que instalar o programa, ou só no servidor?

Outra.. meu projeto funciona legal em uma máquina local, porém quando eu instalo em rede (via router d-link cabeado) e coloco o endereço 192.168.0.123:C:pastaancodedados.gdb ele me dá um erro que não é possível encontrar a base de dados no diretório mencionado.... e o banco de dados está lá...
o Windows [Ô]servidor[Ô] é um seven e a máquina que está acessando é um XP... porém o compartilhamento da rede em ambas as máquinas, estão totalmente liberados.. coloquei a máquina o máximo vulnerável e desativei o antivirus e firewall por questões de poderem bloquear o acesso... e ERROOOOOO!?

aLGUéM PODE ME MANDAR UM EXEMPLO DE COMO USAM. COM FIREBIRD... ADD...EXCLUIR E ACESSAR TUDO EM REDE?! SÓ PARA CONFERIR COM O MEU E VER ONDE ESTOU ERRANDO!?



Pode parecer bobagem mas você está instalando o FIREBIRD com opção SERVER no seven?

Qual o tipo de SEVEN? A Microsoft restringe o compartilhamento para algumas versões.

Faço o acesso remoto, inclusive externo, com FB normalmente.Qual a diferênça na string de acesso LOCAL para REMOTO?

A questão é o acesso ao banco. Fazendo a conexão, o resto é igual.
EDERMIR 19/08/2011 22:54:01
#382133
Além do mais, o erro é [Ô]no such file or directory[Ô].

Como aparece o erro de ARQUIVO NÃO ENCONTRADO NO DIRETÓRIO?
ADRIANOM 07/09/2011 18:47:36
#383668
Desculpe a demora a responder, assuntos pessoais.

Mas, Uso o Windows Seven Ultimate 32 bits. VB 6 + fIREBIRD 2.5 SIBPRO2.DLL
O Firebird está instalado completo, e uso o IBexpert.

O problema é que fiz tudo o que me mandaram e ainda dá o mesmo erro.
Novamente solicito um arquivo zip, com o exemplo, para que eu analise onde erro.

Agradeço!
EDERMIR 08/09/2011 11:48:46
#383705
Bem, vamos fazer por partes.

Se você colocar a aplicação para rodar na máquina do SEVEN, funciona?

é possível que o firewall do seven esteja bloqueando o acesso ao firebird. Verifique esta possibilidade.

Nas minhas aplicações, apenas instalo o FB cliente e registro a sibpro2.dll. Não preciso de mais nada a não ser a string já informada anteriormente.

Se você quiser, me mande por mensagem privada um telefone fixo que eu entrarei em contato com você e tentarei te ajudar. Depois postaremos aqui a resposta para futuras pesquisas.
ADRIANOM 09/09/2011 21:45:50
#383862
A aplicação não está completo... o que fiz foi um EXE de teste para ver se ele funcionaria na rede.
Basicamente, o programa só abre se a fonte de dados for localizada... o primeiro problema é este.... não reconhece o caminho da fonte de dados.

Será que podem me enviar um exemplo.. para que eu estude e consiga sanar o problema?!
EDERMIR 10/09/2011 23:06:29
#383919
ADRIANOM

Já colocamos exemplos para você tentar resolver. A questão é que não sabemos o que é feito na sua aplicação.

Crie uma aplicação teste apenas para abrir uma tabela no banco e mostrar um campo (simples?). Faça assim (este é basicamente o [Ô]bê-a-bá[Ô]):

- Instale o firebird SERVER (o client é obrigatório) na máquina que você usa para o desenvolvimento.
- instale o sibpro2.dll na máquina que você usa para desenvolvimento.
- crie a aplicação definindo em PROJETO / REFERÊNCIAS o MICROSOFT ACTIVEX DATA OBJECTS 2.8 e MICROSOFT ACTIVEX DATA OBJECTS RECORDSET 2.8
- declare no inicio da aplicação as variaveis de conexão e recordset:
Dim SQL_CONN As ADODB.Connection
Dim SQL_RS As ADODB.Recordset

- no evento FORM1_LOAD faça a conexão com o banco:
Wfile_check = [Ô]IP DO COMPUTADOR:C:/CAMINHO PARA O BANCO/BANCO.gdb[Ô]
Wusername = [Ô]NOME DO USUARIO DO BANCO[Ô]
Wpassword = [Ô]SENHA[Ô]
Set SQL_CONN = New ADODB.Connection
SQL_STRING = [Ô]Provider=SIBPROvider.2;Data Source=[Ô] & Wfile_check & [Ô];User ID=[Ô] & Wusername & [Ô];Password=[Ô] & Wpassword
SQL_CONN.ConnectionString = SQL_STRING
SQL_CONN.Open
If Err.Number <> 0 Then
MsgBox ([Ô]Erro ao acessar o banco[Ô])
Unload Form1
End
End If

- coloque um botão na sua aplicação e no evento CLICK do botão
Set SQL_RS = New ADODB.Recordset
Wcommand = [Ô]select * from TABELA[Ô]
SQL_RS.Open Wcommand, SQL_CONN, adOpenStatic, adLockReadOnly
If SQL_RS.EOF Then
MsgBox ([Ô]Tabela vazia.[Ô])
End If
SQL_CONN.Close
Unload Form1
End

Basicamente é isso. Se funcionar basta seguir os mesmos procedimentos no servidor, lembrando que o IP na aplicação deve ser midificado também.


Página 2 de 2 [20 registro(s)]
Tópico encerrado , respostas não são mais permitidas