2010-09-14 51 views
0

我有一個程序,我一直支持最近安裝在Windows 7機器上。一切正常,但最近這臺機器已經開始在修改字段後使用recordset.update方法時收到以下錯誤,我收到以下錯誤。addnew後記錄集更新錯誤,即使默認設置爲空字符串,列也不能爲空

-2147467259([MySQL的] [ODBC 3.51驅動程序]的[mysqld-4.0.18-NT]柱 'fd_number' 不能爲空)

表 'fd_number' 在看起來像這樣:

CREATE TABLE `bookguide` (
`author` varchar(100) NOT NULL default '', 
`title` varchar(100) NOT NULL default '', 
`isbn` varchar(13) NOT NULL default '', 
`whls` decimal(10,2) NOT NULL default '0.0000', 
`oldwhls` decimal(10,2) NOT NULL default '0.0000', 
`fd_number` varchar(100) NOT NULL default '', 
KEY `isbn` (`isbn`) 
) TYPE=MyISAM; 

來修改該表中的代碼如下所示:

780  Do While Not txtstream.AtEndOfStream 
790   Line = txtstream.ReadLine 

800   rs.addNew 
      'tempwhole = Mid$(line, 2, 9) + Mid$(line, 119, 1) 
810   author = Mid$(Line, 10, 15) 
820   author = Replace(author, "'", "") 
830   author = Replace(author, ",", "") 
840   title = Mid$(Line, 25, 70) 
850   title = Replace(title, "'", "") 
860   title = Replace(title, ",", "") 
      'tempisbn = Mid$(tempwhole, 2, 8) 
870   rs.fields("isbn").Value = Replace(Trim$(Mid$(Line, 95, 13)), "-", "") 
880   rs.fields("author").Value = author 
890  rs.fields("title").Value = title 
900  rs.fields("whls").Value = Val(Mid$(Line, 139, 5))  
910  rs.Update 
920 Loop 

這僅僅是一個前充足的地方,這是失敗的,最有可能成千上萬的更新/插入通過整個程序完成這種方式。

我試圖重新安裝MySQL ODBC 3.51驅動程序(3.51.27)幾次,包括使用舊版本(3.51.06),它帶走了ADO問題,但引入了一個錯誤,指出了某種效果在上面的循環之後,ODBC驅動程序不支持請求的代碼段

940 rs.Open "UPDATE bookguide SET oldwhls = whls, whls = 0",conn 
+0

因此,在添加一個循環遍歷記錄集並將空字符串分配給對象列的過程之後,我最終得到了與ODBC 3.51.06 Driver給出的相同錯誤。我從來沒有必要拆分更新聲明,但我正在考慮嘗試這種方式,希望它能起作用。 – 2010-09-15 13:43:03

回答

1

這個問題似乎是,ODBC驅動程序的多個版本,爲較新的一個/舊的卸載仍似乎離開sysWOW64 dll和lib文件,一旦我卸載myODBC的版本和從sysWOW64目錄中刪除文件並重新安裝3.51.27驅動程序,錯誤消失。

0

它看起來像'''的默認值不在該字段上應用。你有沒有試過MySQL ODBC驅動程序5.1.7 http://dev.mysql.com/downloads/connector/odbc/5.1.html

+0

那麼,如果它支持數據庫的4.0.18版本,那麼它就可以工作,不幸的是它只能在4.1.1或更高版本上運行。我想我可能需要升級數據庫才能正常工作。 – 2010-09-14 21:42:18

+0

將服務器升級到最新的MySQL版本後我仍然得到錯誤使用ODBC連接器5.1 – 2010-09-15 13:08:24

+0

嘗試設置值之前調用rs.update即rs.fields(「fd_number」)=「」 – bugtussle 2010-09-15 19:18:16

相關問題