Como faço para usar um parâmetro em uma solicitação de dados externos Excel?

StackOverflow https://stackoverflow.com/questions/612664

  •  03-07-2019
  •  | 
  •  

Pergunta

Já pode usar o Excel (2007) para importar dados de SQL Server 2005. Eu adicionar uma conexão de dados e eu inserir uma consulta SQL personalizada que recupera os meus dados desejados. Arrefecer.

Mas o que eu gostaria de acrescentar é a possibilidade de parametrizar a consulta com base em um valor encontrado em uma célula conhecida na planilha.

Meu consulta iria de

SELECT * FROM dbo.MyDataTable WHERE Col1 = 'apples'

para algo como

SELECT * FROM dbo.MyDataTable WHERE Col1 = 'Cell("B2")'

Isso é possível? Se sim, como?

Foi útil?

Solução

Se você é usando MS Query para obter os dados para o Excel, mostra esta página como usar um valor de uma célula na planilha como um parâmetro em sua consulta.

Outras dicas

Tente a sua estruturação seu código da seguinte forma:

Dim strSQL as String
Dim strFruit As String

strFruit = CStr(ThisWorkbook.Sheets("Sheet1").Range("A1").FormulaR1C1)

strSQL = "SELECT * FROM dbo.MyDataTable WHERE Col1 = '" & strFruit & "'"

Eu encontrei-o útil para carregar o parâmetro em uma variável em primeiro lugar, antes de fundir-lo na consulta SQL.

Não faz o seu seqüência SQL mais legível e permite verificar / limpar o parâmetro antes de usá-lo.

Eu não foram usando o Excel 2007, mas em versões anteriores do Excel Eu realmente odeio a integração SQL Query. Em particular, eu achei difícil de fazer exatamente o que você perguntar sobre sem recorrer à pirataria juntos um monte de código VBA. Eu fiz alguma pesquisa e, finalmente, decidiu usar add consulta Excel de Rob Van Gelder em:

http://vangelder.orconhosting.net.nz/excel/queryeditor.html

A seção 'parâmetros' na sua GUI permite que você configure um parâmetro e tem o utilitário quer solicitar ao usuário o valor ou puxar o valor de uma referência de célula. Eu acredito que o último é exatamente o que você quer fazer. Ele também tem a capacidade de auto-refresh quando um valor de célula muda. I utilizar a função de atualização automática muito quando validar dados no meu DB.

Eu tive um par de situações em que as minhas dúvidas se tornou corrupto e eu já não podia abri-los ou ver o texto. Como resultado, eu recomendo manter uma aba na planilha excel para suas consultas e copiar o texto das consultas em células nessa página especial. Dessa forma, se a ferramenta de consulta come suas dúvidas você não terá que reconstruí-los a partir do zero.

A ferramenta de terceiros, embora livre, pode não ser o que você está procurando, mas funciona bem para mim. Boa sorte!

Dim SQLString as String

SQLString = "SELECT * FROM dbo.MyDataTable WHERE Col1 = '" & Cells("B2") & "'"

Seria pena olhar ataques SQL Injection para ver as desvantagens dessa abordagem, mas pode não ser necessariamente uma consideração para o que você precisa fazer

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top