[問題] [ASP]transaction寫入sql server的問題

看板Web_Design作者 (阿嗚)時間13年前 (2012/06/26 15:46), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/1
小弟最近再做一個專案,需要的功能是user上傳一個excel檔案 然後把檔案裡面編輯好的資料直接匯入sql server 不過要做一個transaction功能,如果萬一裡面有一筆以上的資料有誤 就全部都不寫入DB,以免資料混亂 不過目前作的結果都是錯誤的資料不會寫入,但是正確的一樣會寫進DB裡面 想請問一下版上的大大,不知道是我的寫法有問題嗎? 還是另外必須做其他的設定呢?感謝大大 Set Connxls = Server.CreateObject("ADODB.Connection") Connxls.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & Server.MapPath("/easy/sys/agt/MyXls/"&sFileName),"" , "" Conn.BeginTrans On Error Resume Next Set rs=Connxls.execute("Select * from [Sheet1$]") Do Until rs.eof strSQL = "" strSQL="insert into intticket (aaa,bbb,ccc)" strSQL = strSQL &"VALUES " strSQL = strSQL &"('"&rs.Fields(1)&"','"&rs.Fields(2)&"','"&rs.Fields(3)"')" Call Conn.execute(strSQL) rs.moveNext Loop If err.number = 0 Then Conn.CommitTrans response.Write"<script LANGUAGE='javascript'>alert('檔案匯入成功!!')</script>" Else Conn.RollbackTrans response.Write"<script LANGUAGE='javascript'>alert('檔案匯入有誤!')</script>" End if Connxls.close set Connxls=nothing Conn.close set Conn=nothing 另外還有一個問題,如果我excel檔案裡面有10筆資料,假設其中有2筆有誤 我要怎麼抓出哪2筆資料是有問題的呢?謝謝~~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.130.116.72

06/26 17:00, , 1F
資料庫有一個功能叫transaction
06/26 17:00, 1F

06/26 17:02, , 2F
塞資料的時候只要失敗就直接rollback然後回傳row值
06/26 17:02, 2F

06/28 00:06, , 3F
先跑一次檢查,沒有問題再寫入呢?
06/28 00:06, 3F
文章代碼(AID): #1FwMZFSq (Web_Design)
文章代碼(AID): #1FwMZFSq (Web_Design)