addnew之后更新记录集错误,即使默认设置为空字符串,列也不能为空

时间:2010-09-14 20:14:23

标签: mysql vb6 odbc ado

我有一个我最初支持的程序,最近安装在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

2 个答案:

答案 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