台灣最大程式設計社群網站
線上人數
1020
 
會員總數:246203
討論主題:189774
歡迎您免費加入會員
討論區列表 >> ASP >> 想將陣列與 recordset 順序作比對
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
想將陣列與 recordset 順序作比對
價值 : 100 QP  點閱數:846 回應數:4
樓主

lethal
初學者
621 88
3281 265
發送站內信

請教學長,弟想將 tData 的順序想和資料庫的順序做比對,如果資料庫的順序有誤,則更新 seq 欄位。
問題是丟到 InArr後 rs並不會記得上次的順序,感覺這樣的邏輯好像不對,還請指教。




tb
------------------------------------
item_no name seq
------------------------------------
a001a 小白 1
a001a 小黃 3 ←更新為2
a001a 小黑 2 ←更新為3
a001b 小黃 1
a001b 小黑 2
a001c 小紅 1
a001c 小花 2

搜尋相關Tags的文章: [ 陣列比對 ] ,
本篇文章發表於2014-11-17 23:54
1樓
回應

老頑童
捐贈 VP 給 老頑童 檢舉此回應
tData = "a001a:小白,a001a:小黃,a001a:小黑,,,a001b:小黃,a001b:小黑,,,a001c:小紅,a001c:小花"

這邊的資料一定會包含資料庫中所有的資料嗎?
會的話,其實可以不用考慮怎麼比對,每一筆都直接進行Update就行了
即使排名沒變,Update了也不會有影響,所以不用特別去比對要不要Update

或者,可以將資料全部資料清除,全部重新Insert也是一種方法

但若tData並不一定包含所有資料,那就不能只Update一筆了
除了要更新目前的這筆資料外,新排名跟舊排名間的資料也要跟著往後挪一位

但不管是上述哪一種情形,其實都可以不用做比對的動作
除非資料庫中資料很多,怕影響效能才要做考慮
本篇文章回覆於2014-11-18 10:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

lethal
檢舉此回應
老頑童大大您好,tData是從資料庫內撈出來的,所以一定會有這筆資料,資料列後面還有一些欄位沒錯。
就您的意見,突然產生一種想法,也不比對,直接更新 seq
但 seq 會一直往上加,請問是否可以判斷不同的 item_no,讓 seq 重新編號?

本篇文章回覆於2014-11-18 20:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

老頑童
捐贈 VP 給 老頑童 檢舉此回應
conn.execute("update tb set seq='"j+1"' ")
這邊沒加Where條件,會把全部資料都Update為j+1
sql= " select * from tb where item_no ='"&itNo&"' and name= '"&wkSq&"'
這邊也沒必要做select動作,直接Update即可
本篇文章回覆於2014-11-19 10:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

lethal
檢舉此回應
感謝老頑童大大的指導。
本篇文章回覆於2014-11-20 23:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.