2015-11-06 34 views
2

我與SQL合併到VBA相當缺乏經驗,但我的下一個把戲,我想在一個表中的列安排我的胃口。更改「.CommandText」不添加新列

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 

注:「這裏的」說法是沒有必要的,因爲該表爲我們組

該表由50列〜專門設計的,而我顯然並不需要所有的人。

目標: 在工作表中有一個名爲「不要你敢接觸這個」的SQL連接,並且其他工作表中的commandbuttons/userforms能夠收集不同的數據摘要。

現在,雖然操縱SQLstr變量允許我下載我需要的數據,但我不需要所有的數據。就是說,7或8列。

第一個(次要)問題:
Excel似乎忽略了SELECT語句中列的順序。相反的順序上面,它顯示我想要的列,但不是我想要的,但順序相反,他們的順序出現在表中,當我使用SELECT * 我可以處理這一點,但如果有一個修復它的方法,它會更直觀地強制我想要的列的順序。

第二個(主要)問題:
看起來我不能通過更改.CommandText和刷新來添加更多行。例如:
1. SELECT *返回50多歲的列
2.我改變*到,例如,六列
3.在Excel表顯示六列,在它自己的秩序
4.我改變的CommandText到15列,或*
5.表格僅顯示六列。

現在這樣實在太麻煩了,因爲我想用同一個連接執行不同的SQL命令並接收不同數量列。

我應該用什麼來代替改變的CommandText和清爽的連接來實現這一目標,或如何說服Excel來顯示我想要的列的數量?

+0

對於顯示順序,嘗試這樣的事情,'選擇列2 C2,C1 COLUMN1爲etc'一對列的是在相反的順序您表。如果它們按正確的順序顯示,請將別名與字段名稱相同,然後重試。 –

回答

2

嘗試用鼠標右鍵單擊表,選擇表,然後外部數據屬性。然後取消保留列排序/過濾/佈局:

enter image description here

+0

簡單的解決方案是最好的!謝謝,我懷疑我會想到它。 –