[firebase-br] RES: Mais duvidas

Julio Oliveira juliocesararaujo.oliveira em gmail.com
Qui Jan 22 15:07:58 -03 2009


Realmente ta difícil pra chegar a uma conclusão, Alexandre e Wilson,
obrigado pelas respostas, mas to fazendo a mesma coisa que vocês fazem mas
mesmo assim não consigo acessar a segunda tabela que abro em meu sistema,
será algum problema junto ao banco ?

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Alexandre [FiveTech]
Enviada em: quinta-feira, 22 de janeiro de 2009 14:15
Para: FireBase
Assunto: Re: [firebase-br] Mais duvidas

  Boa tarde a todos,

  Só pelo código que mandou não dá para ter muita certeza do que está 
acontecendo, mas concordo com o Wilson. Provavelmente você está tentando 
abrir mais de uma conexão com o mesmo nome ao mesmo tempo.
  Faço quase igual ao Wilson, porém utilizo mais funções que facilitam 
durante o código.

Tenho um módulo com uma função Sub Main(). Nesta função abro a única 
conexão do sistema:

Public DB As ADODB.Connection
Public sSql As String

Public Sub Main()
   If App.PrevInstance Then
       MsgBox "Este programa já está sendo executado.", vbCritical
       End
   Else
       Dim bStatus As Boolean
       Call ConectaDB(bStatus)
       If bStatus = True Then
           frmLogin.Show
       Else
           End
       End If
   End If
end sub

Função ConectaDB

Public Function ConectaDB(ByRef bStatus As Boolean) As Boolean
   On Error GoTo ERR_conectarDB
   Call LeArquivoInicial   'Esta função busca em um arquivo .INI alguns 
parametros do banco
     sConnect = "DRIVER=Firebird/InterBase(r) driver; "
   sConnect = sConnect & "UID=SYSDBA; "
   sConnect = sConnect & "PASSWORD=MASTERKEY; "
   sConnect = sConnect & "DATABASE=" & sDataBase    'sDataBase é o local 
e nome do banco que veio pela função LeArquivoInicial()
     Set DB = New ADODB.Connection
   DB.ConnectionTimeout = 180 'Segundos
   DB.CommandTimeout = 180    'Segundos
   DB.CursorLocation = adUseClient
   DB.Open sConnect
   bStatus = True
   Exit Function

ERR_conectarDB:
   Select Case ERR
       Case 3146
           Beep
           Call MsgBox(Error(0), 16, "Atenção")
       Case Is <> 0
           Beep
           Call MsgBox("Ocorreu o erro " & ERR & ", " & ERR.Description, 
16, "Atenção")
           End
   End Select
End Function

E essa aqui é a função que utilizo em todo o sistema para executar as 
selects no banco.

Sub Query(ByRef rs, sSql)

' Executa uma query no banco especificado
' Parametros: rs - variavel ADODB RecordSet
'             sql - comando sql que será executado no banco
'             db - variavel ADODB Connection
' Exemplo de chamada da função: call query(rsPesquisa,ssql)
'                         onde: rsPesquisa receberá o resultado da select
'                               ssql deve conter a select desejada
   On Error Resume Next
     Set rs = New ADODB.Recordset
   rs.Open sSql, DB, 3, 3, 1  'adOpenStatic, adLockOptimistic, adCmdText
   If ERR.Number <> 0 Then
       MsgBox Sql & vbCrLf & ERR.Description & vbCrLf & sSql
   End If
End Sub

Abraços,
Alexandre Sanches Bazan

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista