2009-07-27 77 views
1

我試圖運行Excel中的一個SQL查詢,我想:如何按「排序」列和「包含查詢列名」?

1.爲了通過我的專欄「工作站名稱」
2.包括與查詢

列名的查詢結果現在它將返回沒有列名稱的所有列,並且最終用戶不知道它是什麼。

有人可以幫忙嗎?我卡住了!下面是我當前的代碼:

strQuery = "select pipelineflow.lciid lciid, ldate, volume, capacity, status, " & _ 
     "pipeline, station, stationname, drn, state, county, owneroperator, companycode, " & _ 
     "pointcode, pointtypeind, flowdirection, pointname, facilitytype, pointlocator, " & _ 
     "pidgridcode from pipelineflow, pipelineproperties " & _ 
     "where pipelineflow.lciid = pipelineproperties.lciid " & _ 
     "and pipelineflow.audit_active = 1 " & _ 
     "and pipelineproperties.audit_active =1 " & 
_ 
     "and pipelineflow.ldate " & dtInDate & _ 
     "and pipelineproperties.stationname = '" & Stationname & "' " 

回答

0

如需訂購只是把

Order By stationname 

在查詢結束。

可以使用通過列名重複:

rst(1).Name 

,其中第一個是你的記錄,這個數字是列的索引。

1

對於問題的第1部分,在查詢中添加ORDER BY子句。在這種情況下:通過站名命令

第2部分:不確定爲什麼列名未包含在查詢中。您可以使用類似以下內容(純粹是一個示例)來明確命名列:

select mycolumn as "MyCustomizedColumnName" from mytable 

允許您提供所選列名稱。話雖如此,你不應該被要求爲每一列都這樣做,所以我懷疑你的情況還在發生其他事情。


我應該補充一點,存儲過程(而不是動態SQL)會產生更好的運行時性能。

0

要對查詢結果進行排序,請在查詢結束處使用'ORDER BY'。您查詢的最後一行是這樣的

"and pipelineproperties.stationname = '" & Stationname & "' " & _ 
"ORDER BY pipelineproperties.stationname" 

列標題中查詢數據返回,但不能自動寫入到Excel工作表。下面的代碼片段展示瞭如何遍歷記錄集的列標題並將它們寫入活動單元格的行。

'第一'指您的記錄集,根據需要更新名稱。

If Not rst.EOF Then 
    For x = 0 To rst.Fields.Count - 1 
    With ActiveCell.Offset(0, lcount) 
     .Value = rst.Fields(x).Name 
    End With 
    Next 
End If 

確保您偏移從活動單元格寫下來查詢結果到工作表的時候,否則你的標題會被數據所覆蓋。

Activecell.Offset(1,0).CopyFromRecordset rst