CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他数据库开发 >  VFP

foxpro数据库转换成access

楼主zsx123(爱生活,爱A片)2005-08-25 16:58:36 在 其他数据库开发 / VFP 提问

foxpro改成access  
  foxpro表中有很多数据,access的表结构和他一样,手工复制很费时间  
  如何快速添入到access表中呢? 问题点数:30、回复次数:4Top

1 楼apple_8180(十豆三)回复于 2005-08-25 17:10:20 得分 12

----------DBF   导入   ACCESS----------  
   
   
  方法一:用ACCESS中“文件”->“获取外部数据”->“导入”  
  参考:  
  http://access911.net/eg/swf/importDBF.htm  
  http://access911.net/eg/swf/importDBF.swf  
   
  *********注:此方法不是完全凑效,有时提示“外部表不是预期的格式”。  
   
  方法二:用ACCESS中“文件”->“获取外部数据”->“导入”,然后文件类型选择ODBC   Database(),然后选择<机器数据源>,  
                  点击“新建”来建立一个数据源,数据源类型用“用户数据源”或“系统数据源”(建议用后者),然后点击“下一步”,  
                  驱动程序选择‘Microsoft   Visual   FoxPro   Driver’,点击“下一步”,点击“完成”,  
                  在Data   Source   Name(数源源名称)处输入此数据源名称,可自定,本例如LjDbf,Database   Type(数据库类型)处选择“Free   Table   directory”(自由表路径),然后在下面的Path(路径)处设置你要导入的DBF表所在的路径,本列如“D:\”   ,  
                  点击“确定”关闭数据源配制窗口,然后在“导入对象”窗口选择你要导入的DBF表,最后点击“确定”即可。  
   
   
  方法三:用VFP连接ACCESS,然后用代码把DBF数据一条一条写入ACCESS。就像写入SQL一样  
   
   
  方法四:如果你安装了SQL   Server,可以用SQL   Server的导入导出数据(DTS)来进行,因为DTS有向导,这里不做介绍。  
   
   
  方法五:先把DBF转成EXCEL或TXT,然再用方法一进行导入。  
                  注:DBF表如果不含用备注字段,直接用COPY   TO   表名.XLS   type   xl5   转成EXCEL,如果含用备注型字段,必须用下面方法转成EXCEL:  
   
  ****DBFTOEXCEL.PRG****  
   
  CLOSE   DATABASES   ALL  
  SET   DATE   YMD  
  SET   CENTURY   ON  
  cDbfFile   =   GETFILE("dbf")  
  IF   EMPTY(cDbfFile)  
  RETURN  
  ENDIF  
  USE   (cDbfFile)   ALIAS   FoxTable   IN   0  
  IF   NOT   USED("FoxTable")  
  =MESSAGEBOX("打开表失败,程序将中止!",   16,   "Error")  
  RETURN  
  ENDIF  
  cExcelFile   =   PUTFILE("保存为(&N):",JUSTSTEM(cDbfFile)+".xls","xls")  
  IF   EMPTY(cExcelFile)  
  CLOSE   DATABASES   ALL  
  RETURN  
  ENDIF  
  SELECT   FoxTable  
  oExcelSheet   =   GETOBJECT("","Excel.Sheet")     &&   产生Excel对象  
  IF   NOT   TYPE("oExcelSheet")   =   "O"  
  =MESSAGEBOX("Excel对象创建失败,程序将中止!",   16,   "Error")  
  RETURN  
  ENDIF  
  oExcelApp   =   oExcelSheet.APPLICATION  
  oExcelApp.Workbooks.ADD()  
  oExcelApp.ActiveWindow.WINDOWSTATE=2  
  oSheet   =   oExcelApp.ActiveSheet  
  nFldCount   =   AFIELDS(aFldList,   "FoxTable")  
  FOR   i   =   1   TO   nFldCount  
  oSheet.Cells(1,i).VALUE   =   aFldList[i,   1]  
  ENDFOR  
  cRecc   =   STR(RECCOUNT("FoxTable"))  
  SCAN  
  WAIT   WINDOW   ALLTRIM(STR(RECNO()))   +   "/"   +   cRecc     NOWAIT  
  FOR   i   =   1   TO   nFldCount  
  vValue   =   .NULL.  
  IF   AT(aFldList[i,   2],   "CDLMNFIBYT")   =   0  
  LOOP  
  ENDIF  
  cFldName   =   aFldList[i,   1]  
  vValue   =   EVALUATE(cFldName)  
  DO   CASE  
  CASE   aFldList[i,   2]   =   "C"     &&   字符/字符串  
  vValue   =   TRIM(vValue)  
  CASE   aFldList[i,   2]   =   "D"     &&   日期  
  vValue   =   DTOC(vValue)  
  CASE   aFldList[i,   2]   =   "T"     &&   日期时间  
  vValue   =   TTOC(vValue)  
  CASE   INLIST(aFldList[i,   2],   "N",   "F",   "I",   "B",   "Y")       &&   数值  
  CASE   aFldList[i,   2]   =   "L"     &&   逻辑  
  CASE   aFldList[i,   2]   =   "M"     &&   备注型  
  OTHERWISE  
  vValue   =   .NULL.  
  ENDCASE  
  IF   VARTYPE(vValue)   =   "C"   AND   EMPTY(vValue)  
  LOOP  
  ENDIF  
  IF   NOT   ISNULL(vValue)  
  oSheet.Cells(RECNO("FoxTable")+1,   i).VALUE   =   vValue  
  ENDIF  
  ENDFOR  
  ENDSCAN  
  cChrStr   =   "ABCDEFGHIJKLMNOPQRSTUVWXYZ"  
  FOR   i   =   1   TO   nFldCount  
  cColumn   =   SUBSTR(cChrStr,   INT((i-1)/26),   1)   +   SUBSTR(cChrStr,   IIF(MOD(i,   26)=   0,   26,   MOD(i,   26))   ,   1)  
  oSheet.COLUMNS(cColumn   +   ":"   +   cColumn).COLUMNWIDTH   =   12  
  IF   aFldList[i,   2]   =   "M"  
  oSheet.COLUMNS(cColumn   +   ":"   +   cColumn).WrapText   =   .F.  
  ENDIF  
  ENDFOR  
  oExcelApp.ActiveWorkbook.SAVEAS(cExcelFile)  
  oExcelApp.ActiveWorkbook.CLOSE(.F.)  
  oExcelApp.ActiveWorkbook.CLOSE(.F.)  
  oExcelApp.QUIT  
  oExcelSheet   =   .NULL.  
  oExcelApp   =   .NULL.  
  WAIT   CLEAR  
  =MESSAGEBOX("转换完毕!",   64,   "OK")  
  CLOSE   DATABASES   ALLTop

2 楼zsx123(爱生活,爱A片)回复于 2005-08-25 17:53:53 得分 0

UPTop

3 楼wwwwb()回复于 2005-08-26 08:05:03 得分 9

参考JET   SQL   select   *   from   ...   in   语句格式Top

4 楼tch789(辉哥)回复于 2005-08-30 10:27:54 得分 9

studyTop

相关问题

  • foxpro数据库转换成access
  • 如何转换 foxpro 数据库?
  • 如何转换 foxpro 数据库?
  • 如何将access数据库转换成SQL server数据库
  • 请问怎样ACCESS数据库转换为SQL数据库?
  • sqlserver数据库转换为Access数据库
  • SQL数据库转换为Access数据库问题?
  • 数据库转换问题:ACCESS--SQL
  • access数据库转换sql问题
  • ACCESS数据库中日期转换?

关键词

  • .net
  • 数据
  • foxpro
  • access
  • 文件
  • excel
  • 选择
  • sql
  • 导入
  • 表

得分解答快速导航

  • 帖主:zsx123
  • apple_8180
  • wwwwb
  • tch789

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo