我在将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显示我想要的列数?
答案 0 :(得分:2)
尝试右键单击表格,选择“表格”,然后选择“外部数据属性”。然后取消选中“保留列排序/过滤/布局:
”