我有一個用vbscript編寫的經典asp網頁,輸出第三方存儲過程的結果。我的用戶希望頁面以不同於從數據庫進來的順序顯示數據列。 是否有一種簡單且安全的方式來重新排列ADO記錄集中的列?重新排列ADO記錄集中的列(字段)
我沒寫這個頁面,也無法更改SP。 我可以在這裏完成的最小變化是什麼,而不是冒險搞砸頁面中的所有其他內容?
的代碼看起來像
dim Conn, strSQL, RS
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ServerName
Set strSQL = "EXEC storedProc @foo = " & Request("fooParam")
'This stored procedure returns a date column, an arbitrary '
' number of data columns, and two summation columns. We '
' want the two summation columns to move so they appear '
' immediately after the data column '
Set RS = Server.CreateObject("ADODB.RecordSet")
RS.ActiveConnection = Nothing
RS.CursorLocation = adUseClient
RS.CursorType = adOpenStatic
RS.LockType = adLockBatchOptimistic
RS.Open strSQL, Conn, adOpenDynamic, adLockOptimistic
dim A
' ----- '
' Insert some code here to move the columns of the RS around '
' to suit the whim of my user '
' ----- '
' Several blocks of code that iterate over the RS and display it various ways '
RS.MoveFirst
For A = 0 To RS.Fields.Count -1
' do stuff '
Next
...
RS.MoveFirst
For A = 0 To RS.Fields.Count -1
' do more stuff '
Next
RS.Close : Set RS = Nothing
Conn.Close : Set Conn = Nothing
使用正確編寫的代碼,結果集中列的順序根本無關緊要,您不應該使用位置索引,而應使用命名索引。 – 2010-04-22 16:57:34
SP返回任意數量的列,其名稱同樣是任意的。 – Sukotto 2010-04-22 16:59:14
所以排序是按列類型?數據列是任意的,總計列也是任意命名的? – Harv 2010-04-22 17:06:58