我有一个我最初支持的程序,最近安装在Windows 7机器上。一切都在工作但是最近这台机器已经开始在修改字段后使用recordset.update方法时收到以下错误我收到了以下错误。
-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 :(得分:1)
似乎问题是ODBC驱动程序的多个版本,对于较新版本/旧版本的卸载似乎仍然在sysWOW64中保留dll和lib文件,一旦我卸载了myODBC的两个版本并删除了来自sysWOW64目录的文件并重新安装3.51.27驱动程序,错误消失了。
答案 1 :(得分:0)
看起来您的默认值''未应用于该字段。您是否尝试过MySQL ODBC驱动程序5.1.7 http://dev.mysql.com/downloads/connector/odbc/5.1.html?