DBF与ACCESS的导入、导出

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

----------DBF 导入 ACCESS----------
delphi_media
方法一:用ACCESS中“文件”->“获取外部数据”->“导入”
方法二:用ACCESS中“文件”->“获取外部数据”->“导入”,然后文件类型选择ODBC Database(),即用数据源方式导入
*****注:以上两种方法不是完全凑效,有时提示“外部表不是预期的格式”。

方法三:用VFP连接ACCESS,然后用代码把DBF数据一条一条写入ACCESS。

就像写入SQL一样
方法四:先把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 DA TABASES 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.WINDOWSTA TE=2
oSheet = oExcelApp.ActiveSheet
nFldCount = AFIELDS(aFldList, "FoxTable")
FOR i = 1 TO nFldCount
oSheet.Cells(1,i).V ALUE = 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 = EV ALUATE(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.SA VEAS(cExcelFile)
oExcelApp.ActiveWorkbook.CLOSE(.F.)
oExcelApp.ActiveWorkbook.CLOSE(.F.)
oExcelApp.QUIT
oExcelSheet = .NULL.
oExcelApp = .NULL.
WAIT CLEAR
=MESSAGEBOX("转换完毕!", 64, "OK")
CLOSE DATABASES ALL
----------ACCESS 导出 DBF----------
打开ACCESS库后,右单击要导出的表,
选择“导出”,出现对话诓后,把“保存类型”选为“*.dbf”,
(注意“文件名”不要超过8位,超过8位后系统会自动截取前8位) 然后点击“保存即可”。

相关文档
最新文档