ADO連接ACCESS數據庫時的怪問題?(能解决送300分!!!!)

tanjunrong123 2005-07-27 05:18:35
小弟最近在一台win2000上开发了一程序,打包安裝后在一台NT4.0的机器上,出現如下错误提示:run time error -2147467259(80004005),经反复试验,发现了错误处,请高手帮帮忙,先谢了!!!!!
试验的原码如下:程序中有2个Command控件,1个text控件和一个MSFlexGrid控件
Dim cnn As New ADODB.Connection
Dim rcc As New ADODB.Recordset

Private Sub Form_Load()
cnn.Open ("Provider=Microsoft.jet.oledb.4.0;data source=d:\probe.mdb")
End Sub

Private Sub Command1_Click()
MSFlexGrid1.Rows = 1
MSFlexGrid1.Cols = 2
MSFlexGrid1.Clear
Set rcc = cnn.Execute("select * from mac")
While Not rcc.EOF
MSFlexGrid1.AddItem 1 & Chr(9) & rcc.Fields("sn").Value
rcc.MoveNext
Wend
rcc.Close
End Sub

Private Sub Command2_Click()
Set rcc = cnn.Execute("update mac set sn='" & Text1.Text & "'")
End Sub

Private Sub Form_Unload(Cancel As Integer)
cnn.Close
End Sub
説明:
1.該程序在win2000机器上运行无异常
2.該程序在NT4.0的机器上运行时,点击Command1运行正常,能正常读取出该数据库数据并显示
3.在NT4.0的机器上运行时,点击Command2时发生上述错误(text1中输入了数据后测试的)
4.NT4.0机器上没有安装过office软件,安装过madc2.1

能解决重谢,决不食言!!!!!!
...全文
246 点赞 收藏 21
写回复
21 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bobo994 2005-08-07
高手多多哦。。
回复
icake 2005-08-02
作为调试,你找一台一样的NT4.0 装个VB,运行下,如果可以就是 NT机器的问题, 如果不行就是程序的问题。
回复
conrad_wan 2005-08-02
建议在每个command_click事件结束时都关闭cnn,下次用到时再open。
回复
tanjunrong123 2005-08-02
MDAC2.6和2.8我都安装了,没有用,错误依旧,错误描叙是一串问号(??????????)?帮帮忙呀!兄弟们!
回复
八哥 2005-07-31
是不是驱动程序不一样
回复
vbman2003 2005-07-30
WIN NT4.0的MDAC_TYP版本低于WIN2000的MDAC_TYP版本,你打包时没有带上WIN2000的MDAC_TYP,所以解决的方法要么加上WIN2000的MDAC_TYP重新打包,要么直接在WIN NT4.0的机器上直接下载安装MDAC_TYP2.5以上版本
回复
fishmans 2005-07-29
现场调试一下,加on error goto 语句,看看err.Description或cnn.errors(0).Description
给出的错误提示是什么再判断
回复
tanjunrong123 2005-07-28
感谢各位大哥建议,以上的出错可能我都查过,都没问题呀!但运行起来错误依旧!
另外MDAC2.8好像不包含microsoft.jet.oledb.4.0 provider
我的程序在2000中是通过的,所以应该不会是语句或语法的错误,这个程序要安装在NT4.0系统下,小弟能力有限,希望哪位高手能帮帮忙呀!!!!!!
回复
liushantjvision 2005-07-28
你应该使用ado的command命令,使用recoreset是不太好用的。这个问题还有可能是nt系统的问题,你试试在nt下打包
回复
LuBingLin 2005-07-28
安装MDAC2.5以上
回复
a97191 2005-07-28
是不是数据库数据出错
回复
tanjunrong123 2005-07-28
每人能解决吗?我顶.......
回复
langhua018 2005-07-27
兄弟你的这个现象和我遇到的有点相识,就是在win9x系统中正常,在NT中老报错,解决的方法就是在自己的计算机上安双操作系统,打包时在不同的系统中做.希望你的问题可以得到解决!
回复
饮水需思源 2005-07-27
在nt4.0的机器上安装MDAC2.8MDACTYP.EXE试试
回复
jtkkjtkk 2005-07-27
这么简单的SQL语句应该不会出什么大问题。是不是你的MDB文件是只读的。
回复
degeshi 2005-07-27
你在做安装程序的时候不要加那个madc2.1
试过没有嘛
回复
MagicianLiu 2005-07-27
80004005错误十分复杂。
标明了是运行时错误。。
可能时因为下列错误下:
1、sql语句出错(要插入或更新的字段的数值不能为空值) /可能是这个错误
2、打开数据库出错,没有在指定目录发现数据库
3、数据库在使用中
4、ACCESS在NTFS目录下,但当前用户权限不能完全控制,建议打开ACCESS文件属性-安全,添加当前用户为完全控制。
回复
wendy_xu2008 2005-07-27
对了,我猜想你可能只是想在command2_click()事件中执行一条Update语句,那就没有必要写成
Set rcc = cnn.Execute("update mac set sn='" & Text1.Text & "'")
因为cnn.Execute("update mac set sn='" & Text1.Text & "'")里的语句并非是一条Select语句,所以将这个无返还值的记录集赋给rcc,出错是必然的。

Private Sub Command2_Click()
on error resume next
  cnn.Execute("update mac set sn='" & Text1.Text & "'")
End Sub
就好。
回复
wendy_xu2008 2005-07-27
那你的command2_click()事件是否已经实现预定功能,你也可以写成:
Private Sub Command2_Click()
on error resume next
  Set rcc = cnn.Execute("update mac set sn='" & Text1.Text & "'")
End Sub

你遇到的问题并不是一个常见的问题,如果已经可以实现预定功能而仅仅是报个错,你可以将它忽略过去就好。
回复
tanjunrong123 2005-07-27
谢谢你的帮助,但说的不是我需要的,再说应该也不是这个问题,因为我在2000机器上运行正常呀!
为何要这样写,因为我的正式程序中需要这么改写数据库的数据.
回复
加载更多回复
相关推荐
发帖

1187

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2005-07-27 05:18
社区公告
暂无公告