更改“.CommandText”不会添加新列

时间:2015-11-06 17:20:21

标签: sql excel vba

我在将SQL合并到VBA方面相当缺乏经验,但是对于我的下一个技巧,我想根据自己的喜好安排表格中的列。

Sub ExecuteQuery1()

Dim SQLstr As String

SQLstr = "select [Id], [Serviceman], [Status], [StatusTXT], [Inner_status], [Departure] , [EntryDate] " & Chr(10) & _
"from [AW_HD_S] order by [Id]"

ActiveWorkbook.Connections("HelpDesk Online").OLEDBConnection.CommandText = SQLstr
ActiveWorkbook.Connections("HelpDesk Online").Refresh
End Sub

注意:“where”语句不是必需的,因为该表是专为我们的小组设计的

该表由~50列组成,我显然不需要全部。

目标: 在工作表中有一个名为“请勿与此触摸”的SQL连接,并且通过其他工作表中的commandbuttons / userforms能够收集不同的数据摘要。

现在,在操作SQLstr变量允许我下载我需要的数据时,我不需要所有的数据。只是,比方说,7或8列。

第一(轻微)问题:
Excel似乎忽略了SELECT语句中列的顺序。而不是上面的顺序,确实显示我想要的列,但不是按照我想要的顺序显示,而是按照它们在使用SELECT *时在表格中出现的顺序显示 我可以解决这个问题,但是如果有办法解决它,那么强制我想要的列顺序会更直观。

第二(主要)问题:
看起来我无法通过更改.CommandText和刷新来添加更多行。例如:
1. SELECT *返回50-something列
我将*改为例如六列
3. Excel中的表格按其自己的顺序显示六列 4.我将CommandText更改为15列,或更改为*
5.表仅显示六列。

现在这真的很麻烦,因为我想使用同一个连接来执行不同的SQL命令并接收不同数量的列。

我应该使用什么而不是更改CommandText和刷新连接来实现它,或者如何说服Excel显示我想要的列数?

1 个答案:

答案 0 :(得分:2)

尝试右键单击表格,选择“表格”,然后选择“外部数据属性”。然后取消选中“保留列排序/过滤/布局:

http://finance.yahoo.com/q?s=DX-Y.NYB