Ir para conteúdo
Fórum Script Brasil
  • 0

DLL + SQL Server


JSavio

Pergunta

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

  • 0

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[/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 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 Sub

isso 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.

Link para o comentário
Compartilhar em outros sites

  • 0
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 Sub

isso 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

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...