Excel:从ODBC文件刷新SQL

时间:2011-07-16 19:25:17

标签: sql excel odbc

我正在使用Excel 2010使用ODBC数据连接读取一些SQL数据。为此,我有.odc连接文件,我可以通过“数据”选项卡和“现有连接”按钮访问。 Excel查找ODC文件,它可以从中检索数据。 Microsoft Query也可以编辑查询没问题。

问题以及我选择.odc文件的原因是,我希望能够更改查询的基础数据源以及查询本身。你看,这个数据是我在Excel中进一步处理的模拟输出;模拟器输出一个SQLite数据库。我经常在模拟器中进行更改以修复错误,然后重新运行以获取新数据。输出格式(即表结构和格式以及所有这些)是相同的,它只是不同的数据。

因此,我们的想法是能够只编辑.odc文件以使用具有更新模拟结果的数据库,在Excel中点击刷新并完成它(.odc文件包含连接字符串和SQL字符串)。在完成the horribly bugged "always use this connection" checkbox之后,我发现Excel将接受对连接字符串的任何编辑(即更改数据库文件),但它拒绝接受对SQL的任何更改。

当然,对SQL查询的编辑不应该经常发生,但偶尔也会发生。我在SQL中而不是之后在Excel中进行一些计算并不罕见,因为坦率地混合“实时”DataTable列(或其他任何名称)和“常规”派生列听起来像是一个受伤的世界。但是,当我在这些计算中犯错误时,我想更新它们,这意味着更新SQL。

显然Excel 从ODC文件中读取连接字符串,但很乐意忽略其中的SQL查询,并且(我认为)将其存储在XLS文件中。我只能想象如果你在公司环境中并且有一些分析查询或存储在ODC文件中的东西,那只会发现你可以在公司范围内的每台计算机上手动进行更改。

我做错了什么,或者这是预期的行为?有没有办法让Excel实际使用ODC文件中的SQL而不是总是使用其本地版本?

1 个答案:

答案 0 :(得分:1)

一些事情:

Part 1
 - Create a template .ODC file.  
    - Create a connection Data tab, From Other Sources, follow the wizard, connect to the DB and data table.
 - Go to the Data tab, Connections and set the connection properties that you want.
 - Export the connection

Part 2
 - Create the working SQL query for SQLite that produces the desired results
 - Put the entire SQL query on one line (odc files like everything on one line, don't ask)

Part 3
 - Right click on the .odc file, use 'Open with' and open it in notepad or notepad++ (NOT WORD)
 - Look for <odc:CommandText> </odc:CommandText>
 - Remove the text that is there and paste your one line query between the commandtext tags
 - Save the .odc file
 - Double click on the .odc file and see if the data opens/appears in Excel

Don't forget to double check to make sure the data in the <odc:ConnectionString> </odc:ConnectionString> is correct.