JSavio Postado Abril 21, 2009 Denunciar Share Postado Abril 21, 2009 1. Fiz uma DLL (clsDB.dll) para acessar um Base de dados no SQL ServerPublic Function ConDB() As ADODB.Connection conDB.Open "Provider=SQLOLEDB;Data Source=myConnection;Initial Catalog=myDB;User Id=myUser;Password=myPWD"End Function 2. Depois um programa VB6 para usar a DLL como conexão do DB - como faço para instanciar a DLL? Quais erros existem na DLL e no programa?Private Sub cmdOK_Click()Dim DBc As clsDBDim RS As New ADODB.RecordsetDim SQL As String Set DBc = New clsDB SQL = "select * from tabela" Set RS = DBc.ConDB.Execute(SQL) 'aqui deveria instanciar a DLL, mas aparece o erro "Object required" Do Until RS.EOF MsgBox RS("CampodaTabela") RS.MoveNext LoopEnd SubQuando executo aparece a msg: "Object required". Qualquer ajuda será bem-vinda. Obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Abril 21, 2009 Denunciar Share Postado Abril 21, 2009 tenta fazer o codigo do metodo mais o menos assim:Public Function ConDB() As ADODB.Connection Dim x As New ADODB.Connection x.Open "Provider=SQLOLEDB;Data Source=myConnection;Initial Catalog=myDB;User Id=myUser;Password=myPWD" ConDB = xEnd Function[/code] entretanto, talvez o melhor você seja instanciar um objeto ADODB.Connection privado, abri-lo no construtor e so retorna-lo para o ConDB, acho q seria melhor. se o erro continuar, tenta fazer, de teste, isso aqui: [code]Private Sub cmdOK_Click()Dim DBc As clsDBDim RS As New ADODB.RecordsetDim CN As New ADODB.ConnectionDim SQL As StringSet DBc = New clsDBSQL = "select * from tabela"Set CN = DBc.ConDBSet RS = CN.Execute(SQL) Do Until RS.EOFMsgBox RS("CampodaTabela")RS.MoveNextLoopEnd Subisso so pra ver. se ele retornar o connection certinho pro CN, então o erro não é na classe e sim nesse codigo.se ele não retornar, sabemos q o erro ta na classe. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JSavio Postado Abril 22, 2009 Autor Denunciar Share Postado Abril 22, 2009 tenta fazer o codigo do metodo mais o menos assim:Public Function ConDB() As ADODB.Connection Dim x As New ADODB.Connection x.Open "Provider=SQLOLEDB;Data Source=myConnection;Initial Catalog=myDB;User Id=myUser;Password=myPWD" ConDB = x End Function entretanto, talvez o melhor você seja instanciar um objeto ADODB.Connection privado, abri-lo no construtor e so retorna-lo para o ConDB, acho q seria melhor. se o erro continuar, tenta fazer, de teste, isso aqui: Private Sub cmdOK_Click() Dim DBc As clsDB Dim RS As New ADODB.Recordset Dim CN As New ADODB.Connection Dim SQL As String Set DBc = New clsDB SQL = "select * from tabela" Set CN = DBc.ConDB Set RS = CN.Execute(SQL) Do Until RS.EOF MsgBox RS("CampodaTabela") RS.MoveNext Loop End Subisso so pra ver. se ele retornar o connection certinho pro CN, então o erro não é na classe e sim nesse codigo.se ele não retornar, sabemos q o erro ta na classe.A dica de alteração da DLL (Function) foi perfeita. Valeu! Quem sabe você também tem resposta para "MySQL com OLE sem ODBC". :D Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
JSavio
1. Fiz uma DLL (clsDB.dll) para acessar um Base de dados no SQL Server
Public Function ConDB() As ADODB.Connection
conDB.Open "Provider=SQLOLEDB;Data Source=myConnection;Initial Catalog=myDB;User Id=myUser;Password=myPWD"
End Function
2. Depois um programa VB6 para usar a DLL como conexão do DB - como faço para instanciar a DLL? Quais erros existem na DLL e no programa?
Private Sub cmdOK_Click()
Dim DBc As clsDB
Dim RS As New ADODB.Recordset
Dim SQL As String
Set DBc = New clsDB
SQL = "select * from tabela"
Set RS = DBc.ConDB.Execute(SQL) 'aqui deveria instanciar a DLL, mas aparece o erro "Object required"
Do Until RS.EOF
MsgBox RS("CampodaTabela")
RS.MoveNext
Loop
End Sub
Quando executo aparece a msg: "Object required". Qualquer ajuda será bem-vinda. Obrigado.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.