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