Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tauame

[Resolvido] Multiplas consultas de uma só vez

Recommended Posts

Olá pessoal, estou utilizando uma conexão ADODB no VBA para acessar um SQL Server. Até aí tudo bem, o problema é que estou colocando multiplas queries em uma String e executando ela, a estrutura dessa String query é +- assim:

 

--primeiro eu crio uma tabela temporária
declare @resultado table (id int UNIQUE, valor1 float, valor2 float, valor3 float, valor4 float, soma float)
insert into @resultado (valor1, id, soma) 
Select [...] --insere na tabela temporaria alguns valores iniciais
--depois são executados diversos updates
Update @resultado [...]
Update @resultado [...]
Update @resultado [...]
Update @resultado [...]
Update @resultado [...]

--e no fim o que me inressa no vba é obter o resultado da query a seguir
select MAX(soma) as Max from @resultado

 

tudo isto está em uma String que eu mando executar na conexão utilizando

 

Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset

Set cnt = New ADODB.Connection
Set rst = New ADODB.Recordset

cnt.Open [...]

Set rst = cnt.Execute(query)
soma = rst![Max]

 

porém, quando executo isto, o resultado é o erro: "Item cannot be found in the collection corresponding to the requested name or ordinal".

 

Quando depurei, percebi que o rst não possui nenhum campo.

 

Alguém pode me ajudar a obter o resultado da query?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvi o problema, descobri que posso ir dando rst.nextRecordSet para pegar os resultados das diversas subqueries dentro da minha grande query, o código ficou assim:

Set rst = cnt.Execute(query)
booNext = True
Do While booNext
   If rst.Fields.count > 0 Then
       soma = rst![Max]
   End If
   Set rst = rst.NextRecordset 'pega o resultado da proxima subquery
   If rst Is Nothing Then 'se ja passou por todas as subqueries
       booNext = False
   End If

Loop

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.