Erro de automação do VBA ao consultar o banco de dados por meio do ODBC

2

Estou tentando executar a macro do Excel para consultar alguns dados do meu banco de dados ODBC. Os detalhes do meu banco de dados são os seguintes:

DSN : sgdv UID : l8qc1 Senha : l8qc1 servidor : sgdv

Estou tentando consultar os dados do banco de dados, mas o VBA mostra o erro abaixo para a linha Connection.Open "DSN=sgdv" .

Erro em tempo de execução -2147217843 (80040e4d) Erro de automação

Não consigo identificar o erro. Por favor ajude. Abaixo está o meu código

Sub ReadDB()
Dim mainWorkBook As Workbook
Dim intRowCounter
Set mainWorkBook = ActiveWorkbook
intRowCounter = 2
mainWorkBook.Sheets("Sheet2").Range("A2:Z100").Clear
Set Connection = CreateObject("ADODB.Connection")
Connection.Open "DSN=sgdv"
strQuery = "SELECT * FROM DEDICT01 where DEDICT01.SER_SN='Z1E80R4C'"
Set resultSet = Connection.Execute(strQuery)
Do While Not resultSet.EOF
    mainWorkBook.Sheets("Sheet2").Range("A" & intRowCounter).Value = resultSet.Fields("DEDICT01.CUST_PARTS_NO").Value
  resultSet.movenext
Loop
resultSet.Close
End Sub

Eu modifiquei o programa e minha nova codificação é

Sub ReadDB()
Dim mainWorkBook As Workbook
Dim intRowCounter
Set mainWorkBook = ActiveWorkbook
intRowCounter = 2
mainWorkBook.Sheets("Sheet2").Range("A2:Z100").Clear
Set Connection = CreateObject("ADODB.Connection")
Connection.ConnectionString = "DSN=sgdv;UID=l8qc1;PWD=l8qc1;"
Connection.Open
strQuery = "SELECT * FROM DEDICT01 where DEDICT01.SER_SN='Z1E80R4C'"
Set resultSet = Connection.Execute(strQuery)
Do While Not resultSet.EOF
    mainWorkBook.Sheets("Sheet2").Range("A" & intRowCounter).Value = resultSet.Fields("DEDICT01.CUST_PARTS_NO").Value
  resultSet.movenext
Loop
resultSet.Close
End Sub

Meu erro anterior se foi, mas agora estou recebendo um novo erro na linha

mainWorkBook.Sheets("Sheet2").Range("A" & intRowCounter).Value = resultSet.Fields("DEDICT01.CUST_PARTS_NO").Value

O erro é

Erro em tempo de execução '3265':

Erro definido pelo aplicativo ou definido pelo objeto

    
por Dragonborn 16.10.2015 / 08:16

2 respostas

1

O problema é sua string de conexão. Tenha em atenção que mencionou UID, palavra-passe, etc., na sua pergunta, mas esta informação não aparece em nenhum código. Para se conectar ao banco de dados, você deve fornecer essas informações na string de conexão.

Tente o seguinte:

Connection.ConnectionString = "DSN=sgdv;UID=l8qc1;PWD=l8qc1;"
Connection.Open 

Eu não posso garantir que isso funcionará, mas pelo menos você deve estar no caminho certo. Se isso não funcionar, talvez seja necessário ajustar a string de conexão. Para obter mais informações sobre conexões ADODB e seqüências de conexão, consulte esta página do MSDN:

link

    
por 22.10.2015 / 14:51
-2

A resposta depende do que você quer dizer com mainworkbook

  • se for outra pasta de trabalho, você precisa dar um caminho completo como c: ......
  • se for uma pasta de trabalho atual, não há necessidade de selecionar o tipo de dados. A pasta de trabalho atual em si é a pasta de trabalho ativa
por 19.10.2015 / 18:23