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

Problemas com macro no excel para obter dados de tabela sql


Guest João Ribeiro

Pergunta

Guest João Ribeiro

Oi pessoal, tudo bom?

Estou a escrever uma macro para fazer uma consulta a sql e colocar os resultados no respectivo sitio. O problema é que recebo o erro '424' - objecto necessário. O código é o seguinte:

'conexao a bd'
 sql = "select * from contsupp inner join contact1 on contsupp.accountno=contact1.accountno where contsupp.contact like '%cp-13253%'"
 Set rs = rs.Execute(sql)

 Do Until rs.EOF

    i = i + 1
    Folha2.Select
    Cells(i, 2) = rs.Fields(2)
    rs.MoveNext
 Loop

Quando eu testo a consulta com:

sql = "select * from contsupp inner join contact1 on contsupp.accountno=contact1.accountno where contsupp.contact like '%cp%'"

tudo corre bem e ele termina a execução.

O resultado da primeira consulta fora do excel devolve dois resultados:

ACCOUNTNO COMPANY CONTACT

A8022757518)X]/:U Januario Manuel de Almeida Marques Paiva

A8072961884#SK5) Angelica Marina Castillo Corona

alguém percebe o que tou a fazer errado?

Brigado

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

da uma olhada na linha:

Set rs = rs.Execute(sql)

você chama o execute do rs. não devia ser de um objeto connection??

quanto ao movenext, acho q não é isso não, o eof esta sendo testado certinho.

caso isso não resolva, aponte pra nos qual a linha em q ocorre o erro.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest johnybgood

Aqui está o código completo:

Dim rs, sql
 Dim myname, mypath, connstring
 Dim iret
 Dim i As Integer
  

 Set rs = CreateObject("ADODB.Connection")
 i = 0

 connstring = "driver={SQL Server};server=******;uid=******;pwd=******;database=Goldmine"

 rs.Open (connstring)

sql = "select * from contsupp inner join contact1 on contsupp.accountno=contact1.accountno where contsupp.contact like '%cp-13253%'"
Set rs = rs.Execute(sql)

Do Until rs.EOF

i = i + 1
Folha2.Select
Cells(i, 2) = rs.Fields(2)
rs.MoveNext
Loop

Eu axo qe já faço isso em cima... cmo sugerias fazer?

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

  • 0

então, esse erro ocorre quando você tenta usar um objeto não declarado, estranho ele te dar essa mensagem.

mas note q você esta usando a conexao tanto como objeto connection como recordset. talvez o vba esteja fazendo confusao por causa disso. tente criar dois objetos separados. tipo assim:

Dim cn, rs, sql
Dim myname, mypath, connstring
Dim iret
Dim i As Integer
  

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.RecordSet")
i = 0

connstring = "driver={SQL Server};server=******;uid=******;pwd=******;database=Goldmine"

cn.Open (connstring)

sql = "select * from contsupp inner join contact1 on contsupp.accountno=contact1.accountno where contsupp.contact like '%cp-13253%'"
Set rs = cn.Execute(sql)

Do Until rs.EOF

i = i + 1
Folha2.Select
Cells(i, 2) = rs.Fields(2)
rs.MoveNext
Loop[/code]

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...