F flyat Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-27 #1 一个ADOTable1连接DBF表的程序,当移动BDE所在目录, 然后运行时发现数据只能浏览,修改报错;移回BDE就正常?
Z zhengct Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-27 #2 不要用bde了,启动时重新构造connectionstring中的字符串.用odbc什么的都行.
F flyat Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-27 #3 to zhengct 先谢谢你第一个回答了我的问题,但你搞错了,当然是用odbc连接。 审题
S shangshang Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-27 #4 你通过ole db再去连odbc,然后odbc在去连你的数据库驱动。 你如果这样做的话,就是多此一举了。 搞不懂为什么需要这样。
Y Yumpar Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-27 #6 ado+BDE 特别不稳定,在新的环境里可能会出错, 建议不要用,各地的客户不时的来投诉。
F flyat Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-27 #7 我想ADO连接DBE还不至于那么菜。但事实上建立的连接出现了问题。 to shangshang 请告诉我用什么办法连接,谢谢!
F flyat Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-29 #8 因什么我用ADO去连DBF? 从需求上: 当发布一个很小很小的,太不象数据库而又带数据库的程序,我真不想带BDE驱动引擎。 当然可以用ADO+ACCESS,但也不是绝对不用额外开销。 从技术上: 既然mdb可以这样进行,OLE DB->ODBC->ACCESS数据驱动的话 DBF当然可以用同样方式:OLE DB->ODBC->dBASE等DBF数据驱动。 因为ADO理论上可以通过ODBC连接任何所提供或安装的任何数据驱动。 按理说好象跟BDE谈不上任何关系,最痛恨的是失去BDE却问题多多?? 如果这个问题有价值的话,将公布我所用的对ConnectionString的几种配置方法及 几种DBF格式的测试结果。若根本不值一提,只好结束问题了 我确实不想带着阴影学习或者理解ADO。
因什么我用ADO去连DBF? 从需求上: 当发布一个很小很小的,太不象数据库而又带数据库的程序,我真不想带BDE驱动引擎。 当然可以用ADO+ACCESS,但也不是绝对不用额外开销。 从技术上: 既然mdb可以这样进行,OLE DB->ODBC->ACCESS数据驱动的话 DBF当然可以用同样方式:OLE DB->ODBC->dBASE等DBF数据驱动。 因为ADO理论上可以通过ODBC连接任何所提供或安装的任何数据驱动。 按理说好象跟BDE谈不上任何关系,最痛恨的是失去BDE却问题多多?? 如果这个问题有价值的话,将公布我所用的对ConnectionString的几种配置方法及 几种DBF格式的测试结果。若根本不值一提,只好结束问题了 我确实不想带着阴影学习或者理解ADO。
H hbezwwl Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-29 #9 你是说ado+odbc+dbf,连接不成功,跟bde有什么关系呀. 理论上这样应该是可以的,你说移动BDE目录,结果导致 数据只能浏览不能修改,你是不是用ODBC连接DBF的文件用到了 BORLAND的文件,你换成foxpro的试试. //希望与你讨论这个问题直到水落石出, hbezwwl@163.com 53320295
你是说ado+odbc+dbf,连接不成功,跟bde有什么关系呀. 理论上这样应该是可以的,你说移动BDE目录,结果导致 数据只能浏览不能修改,你是不是用ODBC连接DBF的文件用到了 BORLAND的文件,你换成foxpro的试试. //希望与你讨论这个问题直到水落石出, hbezwwl@163.com 53320295
F flyat Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-30 #10 to hbezwwl 首先用视图提供:Provider=MSDASQL.1;Persist Security Info=False;Data Source=dBASE Files连接 dBase数据库,结果出现如题情况,出现一个update错误,所以一开如怀疑可能用到BORLAND文件。 但从出错信讯看来又不象,如下: [Microsoft][ODBC dBase Driver] Operation must use an updateable query 是不是参数有问题,换做: Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=[CollatingSequence=ASCII; DBQ=位置;DefaultDir=位置;Deleted=0;Driver={Microsoft dBase Driver (*.dbf)};FIL=dBase 5.0;] 也不行,干脆 Driver={Microsoft dBase driver (*.dbf)};FIL=dBASE Files; 出局。看来只有寻求另外方式连接: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=位置;Extended Properties='dbase 5.0 Persist Security Info=False'; 结果都是同种错误,真怀疑它们的底层都是一致的。 最后我如hbezww所说的用FOXPRO,参数如下: Provider=MSDASQL.1;Extended Properties="Driver={Microsoft Visual Foxpro Driver};SourceType=DBF;SourceDB=位置"; 这个也搞得我一肚苦水,但至少还有点意思 dBase3.5 修改失败, dBase4 修改可以,添加失败;出错:无效值 dBase5 修改可以,添加可以,但新记录不可以空值,出错为不可空值,界面虽如此, 但其实数据(包括空值)已经填充在表中。 上面用的都是平面表,不敢用关系表测之,惨不忍睹。
to hbezwwl 首先用视图提供:Provider=MSDASQL.1;Persist Security Info=False;Data Source=dBASE Files连接 dBase数据库,结果出现如题情况,出现一个update错误,所以一开如怀疑可能用到BORLAND文件。 但从出错信讯看来又不象,如下: [Microsoft][ODBC dBase Driver] Operation must use an updateable query 是不是参数有问题,换做: Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=[CollatingSequence=ASCII; DBQ=位置;DefaultDir=位置;Deleted=0;Driver={Microsoft dBase Driver (*.dbf)};FIL=dBase 5.0;] 也不行,干脆 Driver={Microsoft dBase driver (*.dbf)};FIL=dBASE Files; 出局。看来只有寻求另外方式连接: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=位置;Extended Properties='dbase 5.0 Persist Security Info=False'; 结果都是同种错误,真怀疑它们的底层都是一致的。 最后我如hbezww所说的用FOXPRO,参数如下: Provider=MSDASQL.1;Extended Properties="Driver={Microsoft Visual Foxpro Driver};SourceType=DBF;SourceDB=位置"; 这个也搞得我一肚苦水,但至少还有点意思 dBase3.5 修改失败, dBase4 修改可以,添加失败;出错:无效值 dBase5 修改可以,添加可以,但新记录不可以空值,出错为不可空值,界面虽如此, 但其实数据(包括空值)已经填充在表中。 上面用的都是平面表,不敢用关系表测之,惨不忍睹。
J jrq Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-30 #11 ADO+DBF, 干BDE何事? 我觉得这之间没有什么关系~ 继续关注!
H hbezwwl Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-30 #12 这样吧,你能不能把你的DBF文件发给我,让我也试试. //晚上可能有时间的,
C CJF Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-30 #13 不知道你在ODBC里面用的是那个Driver呢?。。 建议检查一下。。。DBF也有多个Driver可以进行选择的。。。[]
F flyat Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-30 #14 发现: 所有对ODBE用dBase驱动连接请求都居然用到BDE下的Iddbas32.dll驱动函数库? (更改Iddbas32.dll名称时触动权限保护而移动BDE时不会?) 那Microsof的odbcjt32.dll驱动函数库用来干什么?两者居然很相好, BORLAND的Iddbas32.dll和MICROSOF的odbcjt32.dll相互调用,缺一不可? 一个负责更新,一个负责查询。 ADO究竟是怎么搞的?ADO究竟在搞什么?
发现: 所有对ODBE用dBase驱动连接请求都居然用到BDE下的Iddbas32.dll驱动函数库? (更改Iddbas32.dll名称时触动权限保护而移动BDE时不会?) 那Microsof的odbcjt32.dll驱动函数库用来干什么?两者居然很相好, BORLAND的Iddbas32.dll和MICROSOF的odbcjt32.dll相互调用,缺一不可? 一个负责更新,一个负责查询。 ADO究竟是怎么搞的?ADO究竟在搞什么?
G GanQuan Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-31 #15 ado连接dbf,给你一段code。你去试试看! //ado创建dbf procedure TForm1.Button1Click(Sender: TObject); var DBPath: String; begin DBPath:='e:/dfwtest/test7';//你的数据库路径目录; ADOConnection1.ConnectionString:='Provider=MSDASQL.1;' +'Persist Security Info=False;' +'Extended Properties=' +'"Driver={Microsoft Visual FoxPro Driver};' +'UID=;' +'SourceDB='+ DBPath + ';' +'SourceType=DBF;' +'Exclusive=No;' +'BackgroundFetch=Yes;' +'Collate=Machine;' +'Null=Yes;' +'Deleted=Yes;"'; AdoConnection1.Open; AdoQuery1.Sql.Text := 'create table "aaa.dbf" (aaa char(2))'; //AdoQuery1.Sql.Text := 'create table "ddd.dbf" (aaa char(2)),fff float(3),eee numeric (4,1),torf boolean ,rdate date)'; AdoQuery1.ExecSql; end; //ado打开dbf procedure TForm1.Button3Click(Sender: TObject); var DBPath: String; begin DBPath:='e:/dfwtest/test7';//你的数据库路径; ADOConnection1.ConnectionString:='Provider=MSDASQL.1;' +'Persist Security Info=False;' +'Extended Properties=' +'"Driver={Microsoft Visual FoxPro Driver};' +'UID=;' +'SourceDB='+ DBPath + ';' +'SourceType=DBF;' +'Exclusive=No;' +'BackgroundFetch=Yes;' +'Collate=Machine;' +'Null=Yes;' +'Deleted=Yes;"'; AdoQuery1.close; AdoQuery1.sql.clear; AdoQuery1.sql.Text := 'select * from ddd.dbf'; adoquery1.Open; end; //修改,更换路径后要改上面代码中的DBPath变量值 procedure TForm1.Button4Click(Sender: TObject); begin AdoQuery1.insert; AdoQuery1.FieldByName('aa').Value := 'bb'; AdoQuery1.Post; end;
ado连接dbf,给你一段code。你去试试看! //ado创建dbf procedure TForm1.Button1Click(Sender: TObject); var DBPath: String; begin DBPath:='e:/dfwtest/test7';//你的数据库路径目录; ADOConnection1.ConnectionString:='Provider=MSDASQL.1;' +'Persist Security Info=False;' +'Extended Properties=' +'"Driver={Microsoft Visual FoxPro Driver};' +'UID=;' +'SourceDB='+ DBPath + ';' +'SourceType=DBF;' +'Exclusive=No;' +'BackgroundFetch=Yes;' +'Collate=Machine;' +'Null=Yes;' +'Deleted=Yes;"'; AdoConnection1.Open; AdoQuery1.Sql.Text := 'create table "aaa.dbf" (aaa char(2))'; //AdoQuery1.Sql.Text := 'create table "ddd.dbf" (aaa char(2)),fff float(3),eee numeric (4,1),torf boolean ,rdate date)'; AdoQuery1.ExecSql; end; //ado打开dbf procedure TForm1.Button3Click(Sender: TObject); var DBPath: String; begin DBPath:='e:/dfwtest/test7';//你的数据库路径; ADOConnection1.ConnectionString:='Provider=MSDASQL.1;' +'Persist Security Info=False;' +'Extended Properties=' +'"Driver={Microsoft Visual FoxPro Driver};' +'UID=;' +'SourceDB='+ DBPath + ';' +'SourceType=DBF;' +'Exclusive=No;' +'BackgroundFetch=Yes;' +'Collate=Machine;' +'Null=Yes;' +'Deleted=Yes;"'; AdoQuery1.close; AdoQuery1.sql.clear; AdoQuery1.sql.Text := 'select * from ddd.dbf'; adoquery1.Open; end; //修改,更换路径后要改上面代码中的DBPath变量值 procedure TForm1.Button4Click(Sender: TObject); begin AdoQuery1.insert; AdoQuery1.FieldByName('aa').Value := 'bb'; AdoQuery1.Post; end;
F flyat Unregistered / Unconfirmed GUEST, unregistred user! 2002-04-02 #16 to GanQuan 跟我那个 foxpro形式的结果是一样的。 hbezww你好,e好久前发了,收到了吗?