多步操作產生錯誤

 

現象:

       執行到以下賦值語句的時候會報,多步操作產生錯誤(如圖)

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

    

 

   

 

開發環境:

       VB+ADO2.7,數據庫服務器爲oracle9i,客戶端爲oracle9i精簡版

分析:

       開始以爲是程序代碼的原因,也看了網上的許多分析,一般產生這種情況的無非是以下原因:

1、  要更新的值跟字段類型不一致

2、  要更新值的長度大於字段定義的長度

3、  將空值插入非空字段中

這些原因基本上是邏輯造成的,但我查看了代碼,均排除以上原因,而且最大的問題是,客戶端如果安裝的是9i完整版,那不會報上面這個錯誤,如果客戶端裝的是9i精簡版,就會出現以上問題,有一個解決辦法就是客戶端直接用9i完整版安裝,但一個問題是,完整版要<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1G多,精簡版不到13M,有點不甘心。

再測,發現使用cnn.Execute “update…”方式,更新記錄是可以的,而且用賦值的辦法更新其他表多沒問題,於是將Fdrop重建,還是一樣,再將Fdrop,而且把表結構變掉,發現還是會報錯,修改表名變爲F_Z,不報錯,太奇怪了,難道跟表名有關?

 

結論:

       可能是9i精簡版的一個BUG,不能對F表進行VB賦值操作

解決辦法:

1、  修改表名,在數據庫設計的時候不建議使用像a,b,f這樣簡單的表名

2、  修改更新方式,將其改爲cnn.Execute “update…”方式

3、  客戶端裝9i完整版

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章