如何在VF中为DBF表批量增加记录

如何在VF中为DBF表批量增加记录,第1张

首先你在电子表格里表要保存成.dbf格式(文件-另存为-凳帆伏类型里选DBF4或DBF3都可以),如abc.dbf,然后在VF中先枣携打开abc.dbf这个表,使用modi stru这轿尘个命令调整一下表的结构(如字段类型,字段宽度)和要追加的表一致,然后打开要追加记录的表,使用append from abc这个命令就可以批量追加。

以下均以SQL2000、VFP6及以上的表为例

代码导入:查询分析器中执行如下语句(先选择对应的数据库)

-------------如果接受导入数据的SQL表已存在

--如果接受导入数据的SQL表已经存在

Insert Into 已经存在的SQL表名 Select * From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro DriverSourceType=DBFSourceDB=c:','select * from aa.DBF')

--也可以对应列名进行导入,如:

Insert Into 已经存在的SQL表名 (列名1,列名2...) Select (对应列名1,对应列名2...) From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro DriverSourceType=DBFSourceDB=c:','select * from aa.DBF')

-------------如果接受导入数据的SQL表不存在,导入时创建

--方法一:有一个缺点:把DBF表导入SQL Server中后,马上用VISUAL FOXPRO打开DBF表,会提示“不能存取文件”,即这个表还被SQL打开着呢。可是过了1分钟左右,再打开DBF表就可以了,说明经过一段时间后查询分析器才把这个表关闭。

Select * Into 要生成的SQL表名 From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro DriverSourceType=DBFSourceDB=c:','select * from dbf表名.DBF')

--需要安装Visual FoxPro ODBC Driver(驱动下载:http://msdn2.microsoft.com/zh-cn/vfoxpro/Bb190233.aspx)

--方法二:有一个缺点:把DBF表导入SQL Server中后,马上用VISUAL FOXPRO打开DBF表,会提示“不能存取文件”,即这个表还被SQL打开着呢。可是过了1分钟左右,再打开DBF表就可以了,说明经过一段时间后查询分析器才把这个表关闭。

Select * Into TEMP1 From openrowset('VFPOLEDB.1','C:''admin''' ,'select * from dbf表名.DBF')

--如果没有安装VFP,需要把vfpoledb.dll拷贝到SYSTEM目录下,并注册。

--方法三:导入脊坦SQL SERVER后,源表再用VFP打开就不提示“不能存取文件”,说明语句执行橘者后就把源表关闭了。不过也有不尽人意的地方,就是用前两种方式导入后,源表中的字符型字段导入后SQL表字段对应变成NVARCHAR了。

Select * Into 要生成的SQL表名 From OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase IVHDR=NOIMEX=2DATABASE=c:','select * from dbf表名.dbf')

--方法四:导入SQL SERVER后,源表再用VFP打开就不提示“不能存取文件”,说明语句执行后就把源表关闭了。不过也有不尽人意的地方,就是用前两种方式导入后,源表中的字符型字段导入后SQL表字段对应变成NVARCHAR了。

Select * Into 要生成的SQL表名 From OPENROWSET('MICROSOFT.JET.OLEDB.4.0','dBase IIIHDR=NOIMEX=2DATABASE=c:','select * from dbf表名.dbf')

--方法五:用BDE驱动导入时,再用VFP打开源表时不会提示“不能圆野薯存取文件”,不过有点问题:就是有时整型数据导入后变为负数了。

Select * From OPENROWSET('MSDASQL','CollatingSequence=ASCIIDBQ=D:SENDDefaultDir=D:SENDDeleted=0Driver={Driver do Microsoft dBase (*.dbf)}FIL=dBase 5.0','select * from dbf表名.DBF') A

--前提:先在机器上安装BDE的驱动

--也可以只导几个字段

Select * Into 要生成的SQL表名 From openrowset('MSDASQL','Driver=Microsoft Visual FoxPro DriverSourceType=DBFSourceDB=c:','select 字段1,字段2 from aa.DBF')

/*说明:

SourceDB=c:c:是dbf文件的存放目录

aa.Dbf是dbf文件名

*/

工具导入1:通过SQL Server的“导入导出数据”工具(DTS)

1、建立Visual FoxPro的数据源:

在ODBC中建立一个Visual FoxPro的数据源(ODBC-Microsoft Visual FoxPro Driver)的步骤如下:

打开ODBC配制窗口 ->

选择“用户DSN”页面或“系统DSN”页面,建议用后者 ->

点击“添加”按钮 ->

选择“Microsoft Visual FoxPro Driver”这个驱动 ->

在Data Source Name(数源源名称)处输入此数据源名称,可自定,本例如LjDbf,Database Type(数据库类型)处选择“Free Table directory”(自由表路径),然后在下面的Path(路径)处设置你要导入的DBF表所在的路径,本列如“D:” ->

点击“OK”(确定)配制完成 ->

关闭ODBC配制窗口

2、通过SQL的导入导出数据(DTS)来把DBF表导成SQL表:

开始 ->

程序 ->

Microsoft Sql Server-导入导出数(DTS)->

下一步 ->

此步为“选择数据源”的窗口,“数据源”选“Microsoft Visual FoxPro Driver”,同时在"用户/系统DSN"处选择你刚刚配制的数据源名(本例如LjDbf,当然上面配制数据源的过程也可以通过“用户/系统DSN”后面有一个“新建”按钮来完成),然后点击“下一步” ->

此步为“选择目的”的窗口,“目的”选"用于SQL Server的Microsoft OLE DB提供程序"(此项一般为默认),同时选择你要导成的SQL表的存放数据库、服务器及服务器的验证方式,然后点击“下一步” ->

这时:

A:如果要把DBF表全部字段均导入,则选择“从源数据库复制表和视图”,点击“下一步” ->

选择要导入的DBF表,在‘目的’处可修改生成SQL表的名称,默认与DBF表名一样,点击“下一步” ->

再点击“下一步” ->

最后点击“完成”进行导入即可(导入成功与否DTS会有提示)。

B:如果只导入DBF表中的几个字段或全部字段(如果导入全部字段,也可以用上面步骤A,结果是一样的,只是方法不同),则选择“用一条查询指定要输出的数据”,点击“下一步” ->

点击“查询生成器”,选择要导入的DBF表(此时可选择列),点击“下一步” ->

指定排序顺序,选一个或多个排序字段,如果不用排序,此步可略,点击“下一步” ->

此步可以指定查询条件,如果没有条件,此步可略,点击“下一步” ->

出现了对应的SQL语句(也可以再修改生成的SQL语句,但不推荐),再点击“下一步” ->

这时可修改要生成的SQL表名,默认为“结果”,再点击“下一步” ->

再点击“下一步” ->

最后点击“完成”进行导入即可(导入成功与否DTS会有提示)。

工具导入2:

先把DBF表转成EXCEL或TXT,然后SQL SERVER的导入导出工具把EXCEL或TXT导入即可(此方法类似方法二,不再介绍)。

----------Sql Server表 导出 Dbf----------

方法一:如果DBF表已经存在,在查询分析器中执行以下语句(先选择对应的数据库)

Insert Into openrowset('MSDASQL','Driver=Microsoft Visual FoxPro DriverSourceType=DBFSourceDB=c:','select * from 表B.DBF') Select * From 表a

/*说明:

SourceDB=c: c:是dbf文件的存放目录

表B.Dbf 是已经存在dbf文件名,数据导入此表

表A.Dbf 是要导出的SQL表名

*/

方法二:如果DBF表不存在,直接导出时创建,通过SQL Server的“导入导出数据”工具

1、建立Visual FoxPro的数据源:

在ODBC中建立一个Visual FoxPro的数据源(ODBC-Microsoft Visual FoxPro Driver)的步骤如下:

打开ODBC配制窗口 ->

选择“用户DSN”页面或“系统DSN”页面,建议用后者 ->

点击“添加”按钮 ->

选择“Microsoft Visual FoxPro Driver”这个驱动 ->

在Data Source Name(数源源名称)处输入此数据源名称,可自定,本例如LjDbf,Database Type(数据库类型)处选择“Free Table directory”(自由表路径),然后在下面的Path(路径)处随便设置一个路径,本列如“D:” ->

点击“OK”(确定)配制完成 ->

关闭ODBC配制窗口

2、通过SQL的导入导出数据(DTS)来把SQL表导成DBF表:

开始 ->

程序 ->

Microsoft Sql Server-导入导出数(DTS)->

下一步 ->

此步为“选择数据源”的窗口,“数据源”选"用于SQL Server的Microsoft OLE DB提供程序"(此项一般为默认),同时选择你要导出的SQL表所在数据库、服务器及服务器的验证方式,然后点击“下一步” ->

此步为“选择目的”的窗口,“目的”选“Microsoft Visual FoxPro Driver”,同时在"用户/系统DSN"处选择你刚刚配制的数据源名(本例如LjDbf,当然上面配制数据源的过程也可以通过“用户/系统DSN”后面有一个“新建”按钮来完成),然后点击“下一步” ->

这时:

A:如果要把被导出的SQL表的全部字段均导出,则选择“从源数据库复制表和视图”,点击“下一步” ->

选择要导出的表或视图,在‘目的’处可修改生成的DBF表的名称,默认与SQL表名一样,点击“下一步” ->

再点击“下一步” ->

最后点击“完成”进行导出即可(导出成功与否DTS会有提示),导出成功之后的DBF表的主文件名与SQL的表名一样。

B:如果只导出SQL表中的几个字段或全部字段(如果导出全部字段,也可以用上面步骤A,结果是一样的,只是方法不同),则选择“用一条查询指定要输出的数据”,点击“下一步” ->

点击“查询生成器”,选择要导出的SQL表(此时可选择列),点击“下一步” ->

指定排序顺序,选一个或多个排序字段,如果不用排序,此步可略,点击“下一步” ->

此步可以指定查询条件,如果没有条件,此步可略,点击“下一步” ->

出现了对应的SQL语句(也可以再修改生成的SQL语句,但不推荐),再点击“下一步” ->

这时可修改要生成的DBF表名,默认为“结果”,再点击“下一步” ->

再点击“下一步” ->

最后点击“完成”进行导出即可(导出成功与否DTS会有提示)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11994103.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存