[firebase-br] Mais duvidas
Alexandre [FiveTech]
alexandre em fivetech.info
Qui Jan 22 15:14:30 -03 2009
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
Mais detalhes sobre a lista de discussão lista