注册 登录
编程论坛 VB6论坛

如何用VB连接ACCESS2003

luyaqi2011 发布于 2013-02-17 14:50, 2385 次点击
用Adodc.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=地址\文件名.mdb;Persist Security Info=False",在DataGrid中显示。
如果电脑装的ACCESS是2007版本的,可以正常使用,如何ACCESS是2003版本的,显示的为空白。
请问这个问题如何解决。
11 回复
#2
风吹过b2013-02-17 16:43
把 mdb (数据库) 的版本 降下来。

用 ACCESS 2007 打开数据库后,转换成  ACCESS 2003 的格式。

关键是 装了 ACCESS 2003 的机子的 ADODC 驱动 无法支持 2007 的格式。

如 VB6原版的 DATA 控件,只支持 ACCESS 97 的格式,也只能降下数据库版本用。
SP6 的DATA 支持 2003 的格式。
#3
luyaqi20112013-02-18 11:01
我已经将ACCESS的那个数据库降成2003版本了,但是还是一样的情况,如果A电脑是2007,B电脑是2003,在A电脑上一切正常,换到B电脑上就是空白了;
如果用MSFlexGrid连接数据库,就可以完全显示。
#4
曾大虾2013-02-19 13:42
应该与数据库版本没有关系,请发完整源码,以助于解决问题
#5
luyaqi20112013-02-20 08:38
附件中“可以”那份是可以正常出现数据的,用的是MSFlexGrid,下面是用的DataGrid及Adodc,07版的可以正常使用,03版则数据是空白,是哪里出现的了问题?
Adodc.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=地址\表格.mdb;Persist Security Info=False"
Adodc.RecordSource = "SELECT 夹具名称,夹具编号,工程师 FROM A"
Adodc.Refresh
而DataGrid.dataSource=Adodc
#6
lowxiong2013-02-20 10:03
  Adodc1.CursorLocation = adUseClient
  Adodc1.Refresh
  Set DataGrid.DataSource = Adodc1
可以显示了,这不是版本问题,我以前一直用access2000也碰到过,当时是没设置键字段。
如用ado,则在打开记录集前使用rs.cursorlocation=aduseclient,如果访问的是sql数据库则改为rs.cursorlocation=aduseserver

[ 本帖最后由 lowxiong 于 2013-2-20 10:09 编辑 ]
#7
luyaqi20112013-02-20 14:03
Adodc1.CursorLocation = adUseClient
结果还是一样,还是没有数据显示。
#8
lowxiong2013-02-20 20:02
专门装了了office2003,运行正常,你重点检查下你装2003版的windows系统。
只有本站会员才能查看附件,请 登录
#9
luyaqi20112013-02-21 08:48
系统是正常的,没有问题
#10
lowxiong2013-02-21 09:33
我觉得用排除法解决问题
1,在2007电脑上执行没问题,说明控件属性在2007上设置正常
2,在2003电脑上执行有问题,有两种情况会导致,你认为是access版本导致的。
3,我用2003版没问题,说明不是access版本问题。
这样一来只有两种情况导致问题发生:
1:你2003电脑系统问题:从你的谈论可知你是使用adodc、DataGrid控件访问数据库的,这两控件对应的文件为msadodc.ocx、msdatgrd.ocx,再用工具软件分析可知这两控件需要很多其他文件支持,如adodc需要msado15.dll、stdole2.tlb、odbc32.dll等,同样DataGrid也需要不下30个这类文件支持,大多数文件是windows系统文件,任何一个被其他软件升级或改变都会导致你的问题。
2:adodc控件属性设置有问题,很可能你的程序设计是在2007电脑上做的,adodc中数据库文件路径设置死了,比如你在2007上数据库路径为e:\aaa\bbb.mdb,你全盘拷贝到2003电脑上时,你数据库位置是d:\aaa\bbb.mdb,这样导致你adodc控件找不到数据库,所以空白。
结论:你说你系统没问题,2007上运行正常,不是2003版本问题,因此就是adodc属性设置固定,而2003的运行环境和2007不同造成的。
解决办法
1:让2003的程序运行路径和2007完全相同,即在同一盘符和同一目录层次(至少数据库的目录路径一样)
2:adodc中连接数据库字符串中的关于数据库目录路径用变量代替,代码如下(假设数据库和运行程序目录相同):
Adodc.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & app.path & "\文件名.mdb;Persist Security Info=False"
如果再不能解决,你赶快请个和尚或道士,把你电脑前前后后看下,肯定是电脑里住了小鬼打搅的,拜拜神或许会解决!
#11
luyaqi20112013-02-21 14:54
终于发现问题了,是没有对程序进行安装,所以才会出现这种问题。
#12
曾大虾2013-02-25 18:40
1、用MSFlexGrid代替DataGrid来显示数据。
2、在MSFlexGrid的显示数据建议直接用代码。
3、不行就QQ55719889
1