Boa tarde amigos foristas,
Primeiramente gostaria de parabenizá-los pelo excelente fórum e o excelente conteúdo e também pela alegria de ver a cooperação mútua de nossos irmãos portugueses conosco e vice-versa.
Vamos à minha dúvida. Eu possuo uma pasta de trabalho Excel na qual existe um quadro onde devo atualizar valores que estão separados em períodos mensais buscando dados de um BD SQL Server através do ADODB.
Estou tentando fazer uma consulta SQL aninhando a parte referente ao período mensal. No primeiro loop eu consigo o resultado, mas no segundo já recebo a seguinte mensagem: "Operação não permitida quando o objeto está em aberto". E quando faço "Close" e/ou "Nothing" no RecordSet recebo esta outra mensagem: "A conexão não pode ser usada para realizar esta operação. Ela está fechada ou é inválida neste contexto."
Abaixo segue o código no qual expliquei acima:
Estou sem idéia do que fazer, pois não tenho experiência com o VBA, fico agradecido se alguém puder me ajudar.
[]'s
Fábio
Primeiramente gostaria de parabenizá-los pelo excelente fórum e o excelente conteúdo e também pela alegria de ver a cooperação mútua de nossos irmãos portugueses conosco e vice-versa.
Vamos à minha dúvida. Eu possuo uma pasta de trabalho Excel na qual existe um quadro onde devo atualizar valores que estão separados em períodos mensais buscando dados de um BD SQL Server através do ADODB.
Estou tentando fazer uma consulta SQL aninhando a parte referente ao período mensal. No primeiro loop eu consigo o resultado, mas no segundo já recebo a seguinte mensagem: "Operação não permitida quando o objeto está em aberto". E quando faço "Close" e/ou "Nothing" no RecordSet recebo esta outra mensagem: "A conexão não pode ser usada para realizar esta operação. Ela está fechada ou é inválida neste contexto."
Abaixo segue o código no qual expliquei acima:
- Código:
'Select principal
sql = "select" _
& " sum(Apu.Valor) as 'Valor'" _
& " from guiarecebida gr" _
& " inner join baixabancaria bb on bb.idbaixabancaria = gr.idbaixabancaria" _
& " inner join guiarecolhimento g on g.numguia = gr.nossonumero and g.numparcela = gr.numparcela" _
& " inner join lancamento l on l.idguiarecolhimento = g.idguiarecolhimento" _
& " inner join tipolancamento tl on tl.idtipolancamento = l.idtipolancamento" _
& " left join (" _
& " select distinct sum(lanc.valor*tlanc.sinal) as 'Valor', lanc.idlancamento," _
& " case when lanc.historico like '% RANFS%' then 'RANFS'" _
& " else tlanc.descricao end as 'Tipo'" _
& " from lancamento lanc" _
& " inner join tipolancamento tlanc on lanc.IdTipoLancamento = tlanc.IdTipoLancamento" _
& " group by lanc.idlancamento, case when lanc.historico like '% RANFS%' then 'RANFS' else tlanc.descricao end" _
& " ) Apu on Apu.idlancamento = l.IdLancamento" _
& " where gr.status = 's' and gr.codmovimento=6 and gr.dtcredito between " _
'Laço para percorrer e preencher de resultados mensais.
For Each mes In Range("B9:M11") 'Quadro de meses
dataInicial = ano.Value & Format(cont, "00") & "01"
dataFinal = ano.Value & Format(cont, "00") & "31"
sql = sql & "'" & dataInicial & "'" & "and" & _
"'" & dataFinal & "'" 'A parte variável da SELECT
If cont = 12 Then
cont = 1
End If
cont = cont + 1
rst.Open sql, cn, adUseClient 'O erro ocorre aqui!
mes.Value = rst!Valor
Set rst = Nothing
Set cn = Nothing
Next mes
rst.Close
cn.Close
Estou sem idéia do que fazer, pois não tenho experiência com o VBA, fico agradecido se alguém puder me ajudar.
[]'s
Fábio