我有一個VB6程序使用adodb記錄集和Microsoft Access 2007數據庫文件;我將代碼添加到應用程序中,該程序將表中的每條記錄取出,對於表中的大多數記錄,我取一個字段,根據該字段中的值計算新值,並將該值存儲在同一記錄中的另一個字段中。我對此進行了測試並投入生產;它在大量筆記本電腦上運行時沒有(報告)錯誤。adodb updateBatch存儲不正確的信息
今天報錯了;盡我所知,記錄集上的updateBatch方法存儲的值與我放在那裏的值略有不同,與我打算放在那裏的值完全不同。我把它放在調試器中,驗證了新值是我想要的;我已經寫入了將基本值和新值寫入文件的語句,並驗證了這些是我想要的,然而不同的值最終會存在於數據庫中。
下面是相關的循環:
sqlStr = "Select key_citation, long_citeIndex from citation"
Set rs = m_dbh.runSQLReturnRS_RW(sqlStr)
While Not rs.EOF
citationNumber = rs.Fields("key_citation").value
If Left$(citationNumber, 1) <> "W" Then
newIndex = Citation.calculateCiteIndex(citationNumber)
Open "c:\CitationIndexDebug.txt" For Append As #4
Write #4, citationNumber, newIndex
Close #4
rs.Fields("long_citeIndex").value = newIndex
End If
rs.MoveNext
Wend
rs.UpdateBatch
rs.Close
Set rs = Nothing
runSQL等將打開adOpenDynamic記錄,ADLOCKBATCHOPTIMISTIC
我試圖把rs.Update在每個記錄,但是這似乎並沒有一起工作;我認爲,因爲應用程序的其餘部分使用updateBatch,runSQL語句會在假設批量更新的情況下打開記錄集。
任何人都有任何想法,爲什麼這是錯誤的,錯誤只有一小部分時間?正如我所說的,它可以正確運行,正如我可以在分數/幾百臺機器上分辨的一樣,然後在這個特定的數據庫上出現錯誤。
您可以在開發環境中一致地重現問題嗎?如果是這樣,我會建議在正在更新的數據庫上運行SQL事件探查器,以便您可以看到ADODB正在生成哪些SQL命令。 –
是的,我可以反覆產生問題。我不熟悉SQL分析器;你能指點一些能告訴我如何運行它的東西嗎?這是一個MS Access數據庫,嚴格來說是桌面型的;我有MS Access,但根本沒有運行SQL Server。謝謝! – arcy
哎呀,對不起!我看到你把Access,但由於某種原因,我只是假設SQL服務器。我的評論對你來說並沒有多大用處。看看這個問題/答案類似的東西,但可能適合你:http://stackoverflow.com/questions/2735412/access-mdb-is-it-possible-to-monitor-and-log-actual-查詢作出反對一個acc –