如果解开,我另开10贴给你加分!!! 如果解不开,说明理由,或你也遇到过这样问题的,我也结贴也给你加分!

zfming 2006-10-18 04:15:05
1000大洋~~~~


主  题: 用ADO打开dbf,如何实现两个不同路径下的dbf文件的关联?请高手帮忙!
作  者: zfming () Blog
等  级:
信 誉 值: 99
所属社区: Delphi 数据库相关
问题点数: 100
回复次数: 5
发表时间: 2006-10-18 13:42:45



例如
连接字是
Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=d:\temp;Extended Properties=dbase 5.0;Persist Security Info=True

可我要实现d:\temp下a.dbf和c:\b.dbf的关联,怎么实现?请高手帮忙!


zfming() ( ) 信誉:99 Blog 2006-10-18 14:18:00 得分: 0


高手快帮啊,我这里急得成了热锅上蚂蚁了:—(,要300给300,要500给500了!!!!!!!


Top
smallBridge(萧秋雨) ( ) 信誉:100 Blog 2006-10-18 15:29:00 得分: 0


看看下面的内容(转贴),就能找到解决你的问题的办法,实际上就是把另一个数据源看作另外一张表进行操作,只要用连接字符串指定位置等相关信息即可,附简单代码(Excel ->Access)。

adoConn.ConnectionString
:= 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;' +
'Data Source=d:\mydb\db1.mdb;Mode=Share Deny Read|Share Deny Write';
adoQry.Connection := adoConn;
adoQry.SQL.Text := ' INSERT INTO zMLK (UnitName, UnitXZQH, UnitCode) ' +
' SELECT name, qh, code ' +
' FROM [Excel 8.0;database=D:\myFile\ml061.xls].[ml061$]';
...
其中,[Excel 8.0;database=D:\myFile\ml061.xls].[ml061$]就是你要连接的第二个表,实际上是一个Excel文件,.dbf文件处理的方式类似,只是不需要"Excel 8.0".
====================================================================================
SQL Server和Access、Excel数据传输


一、SQLServer和Access

1、查询Access中数据的方法:

select * from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from serv_user')



select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="c:\DB2.mdb";User ID=Admin;Password=')...serv_user

2、从SQLServer向Access写数据:

insert into OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from Accee表')

select * from SQLServer表

或用BCP

master..xp_cmdshell'bcp "serv-htjs.dbo.serv_user" out "c:\db3.mdb" -c -q -S"." -U"sa" -P"sa"'

上面的区别主要是:OpenRowSet需要mdb和表存在,BCP会在不存在的时候生成该mdb

3、从Access向SQLServer写数据:有了上面的基础,这个就很简单了

insert into SQLServer表 select * from

OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from Accee表')

或用BCP

master..xp_cmdshell'bcp "serv-htjs.dbo.serv_user" in "c:\db3.mdb" -c -q -S"." -U"sa" -P"sa"'

4、删除Access数据:

delete from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from serv_user')

where lock=0

5、修改Access数据:

update OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select * from serv_user')

set lock=1

SQLServer和Access大致就这么多。

二、SQLServer和Excel

1、向Excel查询

select * from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=yes;database=c:\book1.xls;','select * from [Sheet1$]') where c like '%f%'

select * from

OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\book1.xls',[sheet1$])

1)hdr=yes时可以把xls的第1行作为字段看待,如第1个中hdr=no的话,where时就会报错

2)[]和美圆$必须要,否则M$可不认这个账

2、修改Execl

update OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;hdr=yes;database=c:\book1.xls;','select * from [Sheet1$]')

set a='erquan' where c like '%f%'

3、导入导出

insert into OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;hdr=yes;database=c:\book1.xls;','select * from [Sheet2$]')(id,name)

select id,name from serv_user

或BCP

master..xp_cmdshell'bcp "serv-htjs.dbo.serv_user" out "c:\book2.xls" -c -q -S"." -U"sa" -P"sa"'

从Excel向SQLServer导入:

select * into serv_user_bak

from OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=yes;database=c:\book1.xls;','select * from [Sheet1$]')

如果表serv_user_bak不存在,则创建

有关BCP和分布式查询的详细解答,就查SQLServer自带的帮助吧。

SQLServer和txt文件、HTML文件、VFP文件的数据交换都显得非常容易了。。。。




Top
smallBridge(萧秋雨) ( ) 信誉:100 Blog 2006-10-18 15:33:00 得分: 0


针对你的情况,参考下面的语句:
adoQry.SQL.Text
:= ' INSERT INTO Table1 (Name, XZQH, Code) ' +
' SELECT name, qh, code ' +
' FROM [Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=d:\temp2.dbf;Extended Properties=dbase 5.0;Persist Security Info=True]';


Top
zfming() ( ) 信誉:99 Blog 2006-10-18 15:37:00 得分: 0


我用这个方法是试过了,但提示from子句错误啊
select b.*,a.zqdm,a.cjsl,a.cjjg,a.cjsj,a.bs from cjhb a,OPENROWSET(’MICROSOFT.JET.OLEDB.4.0’
,’dBase 5.0;HDR=NO;IMEX=2;DATABASE=C:\’,’select * from [viewobj.dbf]’) b where a.gddm=b.gdzh order by a.cjsj


Top
zfming() ( ) 信誉:99 Blog 2006-10-18 15:39:00 得分: 0


我要关联


Top
...全文
95 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧