Bom dia, Srs.
Gostaria de uma ajuda, eu tenho a estrutura que exporta um select com as colunas fixa que seria algo assim:
# Parte da Conexão
With cnt If Val(Application.Version) < 12 Then .Provider = "Microsoft.Jet.OLEDB.4.0" Else .Provider = "Microsoft.ACE.OLEDB.12.0" End If ' ABRE CAIXA PARA SELECIONAR O ARQUIVO .Open importFileName End With
# Parte do SQL que exporta para a Plan
' DADOS DE CONSULTA DA TABELA CHUVA - SEM COLUNAS NOVAS strSql = "" strSql = strSql & "SELECT QualAgua.RegistroID, QualAgua.EstacaoCodigo, QualAgua.Data, " strSql = strSql & "QualAguaStatus." & UserFormColunasVariaveis.vNomeColunaLigacao & " As Total, QualAgua." & UserFormColunasVariaveis.vNomeColuna & " As TotalSomado " strSql = strSql & "FROM ((((((Estacao INNER JOIN Estado ON Estacao.EstadoCodigo = Estado.Codigo) " strSql = strSql & "INNER JOIN Entidade ON Estacao.OperadoraCodigo = Entidade.Codigo) " strSql = strSql & "INNER JOIN Bacia ON Estacao.BaciaCodigo = Bacia.Codigo) " strSql = strSql & "INNER JOIN SubBacia ON Estacao.SubBaciaCodigo = SubBacia.Codigo) " strSql = strSql & "INNER JOIN Municipio ON Estacao.MunicipioCodigo = Municipio.Codigo) " strSql = strSql & "INNER JOIN QualAgua ON Estacao.Codigo = QualAgua.EstacaoCodigo) " strSql = strSql & "INNER JOIN QualAguaStatus ON QualAgua.RegistroID = QualAguaStatus.RegistroID " strSql = strSql & "WHERE (QualAgua.EstacaoCodigo in (" & strParam & ") " strSql = strSql & "AND QualAgua." & UserFormColunasVariaveis.vNomeColuna & " IS NOT NULL " strSql = strSql & "ORDER BY QualAgua.Data ASC" ' ABRE RECORDSET COM A INTRUCAO SQL rst.Open strSql, cnt ' VERIFICA SE A ESTACAO SOLICITADA EXISTE If rst.EOF And rst.BOF Then ' MENSAGEM DE ALERTA DO SISTEMA MsgBox "Estação não foi encontrada.", vbCritical, "Atenção" Else ' LOOPS DE TODAS AS LINHAS PARA INSERRI-LAS NA FOLHA rowNum = 9 Do While Not rst.EOF Plan2.Range("B" & rowNum).Value = rst![RegistroID] Plan2.Range("C" & rowNum).Value = rowNum - 8 Plan2.Range("D" & rowNum).Value = rst![EstacaoCodigo] Plan2.Range("E" & rowNum).Value = rst![Data] Plan2.Range("F" & rowNum).Value = rst![Total] Plan2.Range("F" & rowNum).Value = rst![TotalSomado] rst.MoveNext Loop End if
Agora vem o detalhe o meu SQL será dinâmico hora terá 6 colunas como poderá ter até 100 colunas, nesse momento que não consegui montar a exportação dinâmica, e gostaria de uma ajuda dos colega.
Toda e qualquer ideia sempre é bem vinda.
Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.
Varra os campos pra colocar os nomes na linha 1,
e em seguida:
range("A2").copyfromrecordset rst
e corre pro abraço
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
O que irá determinar o "dinamismo" do sql, em seu exemplo são selecionados 5 campos.
Qual o fator/parâmetro que determinara esse incremento?
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Reinaldo
Eu tenho um UserForm que preencher conforme o banco selecionado na tabela especifica.
O usuário ira selecionar as estações que vão no WHERE e as variáveis no SELECT, faço a leitura dos itens selecionados no ListBox para poder montar o SELECT.
Na imagem eu selecionei duas estações (66011000 e 66015000 ) e as variáveis Aldrin e Algas, mas posso selecionar ate 153 colunas.
Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.
Varra os campos pra colocar os nomes na linha 1,
e em seguida:range("A2").copyfromrecordset rste corre pro abraço
Obrigado fernando.fernandes
Vou pesquisar a respeito do copyfromrecordset rst
Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.
Não sei se entendi, mas creio que devera criar um loop "lendo' os itens em sua listbox/listview. Algo mais ou menos assim:
' DADOS DE CONSULTA DA TABELA CHUVA - SEM COLUNAS NOVAS strsql = "" strsql = strsql & "SELECT QualAgua.RegistroID, QualAgua.EstacaoCodigo, QualAgua.Data, " 'strsql = strsql & "QualAguaStatus." & UserFormColunasVariaveis.vNomeColunaLigacao & " As Total, QualAgua." & UserFormColunasVariaveis.vNomeColuna & " As TotalSomado " For x = 0 To sualstvariavel.Count - 1 strsql = strsql & "QualAguaStatus." & sualstvariavel(x) Next strsql = strsql & "FROM ((((((Estacao INNER JOIN Estado ON Estacao.EstadoCodigo = Estado.Codigo) " strsql = strsql & "INNER JOIN Entidade ON Estacao.OperadoraCodigo = Entidade.Codigo) " strsql = strsql & "INNER JOIN Bacia ON Estacao.BaciaCodigo = Bacia.Codigo) "
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Reinaldo,
Essa parte que mandou esta tranquilo, o que não estou conseguindo fazer essa parte:
Do While Not rst.EOF Plan2.Range("B" & rowNum).Value = rst![RegistroID] Plan2.Range("C" & rowNum).Value = rowNum - 8 Plan2.Range("D" & rowNum).Value = rst![EstacaoCodigo] Plan2.Range("E" & rowNum).Value = rst![Data] Plan2.Range("F" & rowNum).Value = rst![Total] Plan2.Range("F" & rowNum).Value = rst![TotalSomado] rst.MoveNext Loop
fazer esse loop pegando as colunas que tenho no select para poder imprimir na plan
Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.
Novamente:
remova o loop, e use essa linha assim:
Plan2.Range("B" & rowNum).CopyFromRecordset rst
Faça isso e seus problemas acabam.
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
fernando.fernandes
Obrigado, deu certo com o código que indicou, agora vou fechar o tópico.
Reinaldo
Obrigado pela força.
Se a resposta foi útil! Clique na mãozinha ao lado do botão Citar.
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde.