Access911.net   |   a9BBS   |   OTaA System  
  搜索文章:  
Access911欢迎您光临  
   主页      上传      繁體版       论坛     
设为首页  |  加入收藏   
  
你现在的位置:文章索引 -> 文章分类 -> VBA  
 首页|  近日更新|  下载  |  文章索引  |  搜索|  术语|  承接工程|  
 
系统正在加载内容,请耐心等待...
 
 查询
 窗体
 报表
 
 
 VBA
 函数
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 发布
 OA
 ASP/ASP.NET
 其他语言
 控件
 DELPHI
 C#/.Net
 本站
 其他
 小例程
 常用软件
 参考文档
 业主作品
 网友大作
 
 
友情链接
 access911.net
 
访问人次
 1701975
 
站长 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 订阅

显示附加信息 >>>

如何将ACCESS MDB 中的表导出成文本格式

作者:cg1  摘自:access911.net  :cg1  更新日期:2006-10-12  浏览人次:

 

问题:

如何将ACCESS MDB 中的表导出成文本格式《VBA》

例如:
---------------------
|aaa     |100.2     |
|bb      |1.23      | 
|cccc    |1234      | 
---------------------

导出成:

"aaa   ",00001002
"bb    ",00000123
"cccc  ",00001234

字符右补空格;数字要把小数点去掉,左补0。字符和数字都要定长!

 

回答:

SELECT [newfld1], [newfld2] INTO [text;hdr=no;database=c:\temp].临时.txt
FROM 
    (SELECT left([field1] & "        " , 10) as newfld1,format([field2]*100,"0000000") as newfld2 FROM [tablename])


因转换后都为字符型,所以字段2数字部分也有双引号,如果一定要去掉也可以用OPEN#、PRINT#语句或者用 FSO 将内容写入TXT文件。

OPEN# PRINT# 语句示例如下:
Open "TESTFILE" For Output As #1    ' 打开输出文件。
Print #1, "This is a test"    ' 将文本数据写入文件。
Print #1,    ' 将空白行写入文件。
Print #1, "Zone 1"; Tab ; "Zone 2"    ' 数据写入两个区(print zones)。
Print #1, "Hello" ; " " ; "World"    ' 以空格隔开两个字符串。
Print #1, Spc(5) ; "5 leading spaces "    ' 在字符串之前写入五个空格。
Print #1, Tab(10) ; "Hello"    ' 将数据写在第十列。

' 赋值 Boolean、Date、Null 及 Error 等。
Dim MyBool, MyDate, MyNull, MyError
MyBool = False : MyDate = #February 12, 1969# : MyNull = Null
MyError = CVErr(32767)
' True、False、Null 及 Error 会根据系统的地区设置自动转换格式。
' 日期将以标准的短式日期的格式显示。
Print #1, MyBool ; " is a Boolean value"
Print #1, MyDate ; " is a date"
Print #1, MyNull ; " is a null value"
Print #1, MyError ; " is an error value"
Close #1    ' 关闭文件。


示例文件下载:http://access911.net/down/eg/ExportToText_withNoFieldCaptionAndFixWidth.rar
 (14KB)

 


补充:

1、在导出到文本时,如何把字段名去掉。
SQL语句中,HDR=NO就能实现去掉字段名

2、如果在同一名录中有相同的文本文件,程序会出错!这个问题怎么解决?可以覆盖原来的吗?
在导出前用以下函数解决
Function CheckText(ByVal strFile)
On Error Resume Next
    'Dim strFile As String
    'strFile = "c:\temp\临时.txt"
    
    If Dir(strFile) <> "" Then
        Debug.Print "已经存在该文件现在删除"
        Kill strFile
    End If
End Function

3、那要怎么改才可以用rs1.Open呀?
rs可以用于执行操作查询,但是执行完毕立即关闭,不返回结果集合的。
注意,rs 执行以后是马上关闭的,你无法将上述查询的结果集放在rs中循环读取,如果要读取就再次从文本内加载

全部代码如下:

Function CheckText(ByVal strFile)
On Error Resume Next
    'Dim strFile As String
    'strFile = "c:\temp\临时.txt"
    
    If Dir(strFile) <> "" Then
        Debug.Print "已经存在该文件现在删除"
        Kill strFile
    End If
End Function


Function DoExportToText()
    Dim strSQL As String
    Dim strFile As String
    strFile = "c:\temp\临时.txt"
    
    CheckText strFile
    strSQL = "SELECT [newfld1], [newfld2] INTO [text;hdr=no;database=c:\temp].临时.txt " & _
                "FROM (SELECT left([field1] & ""        "" , 10) as newfld1,format([field2]*100,""0000000"") as newfld2 FROM [tablename]) as aaa"
    
    Dim rs As New ADODB.Recordset
    '注意,rs 执行以后是马上关闭的,你无法将上述查询的结果集放在rs中循环读取,如果要读取就再次从文本内加载
    rs.Open strSQL, CurrentProject.Connection, 1, 1
    
    '比较好的方法是用:
    'CurrentProject.Connection.Execute strSQL
End Function



 


本站文章旨在为该问题提供解决思路及关键性代码,并不能完成应该由网友自己完成的所有工作,请网友在仔细看文章并理解思路的基础上举一反三、灵活运用。

access911.net 原创文章,作者本人对文章保留一切权利。
如需转载必须征得作者同意并注明本站链接

 

 
相关文章
     没有手动相关文章
     如何将整个 MDB 中所有的表全部导出到一个 XLS 中去?
     一个将数据导出到EXCEL的存储过程
     如何实现ACCESS数据及对象的导入导出?
     如何编程读取表/字段的有效性规则、有效性文本属性?
     如何隐藏控件提示文本ControlTipText,让其不在屏幕上不显示?
     如何将表导出为ASP文件?
     SQL SERVER 与ACCESS、EXCEL的数据转换
     导入文本文件时如何指定字段类型?
     如何把文本字段的输入法模式全部关掉?不要手动
     新手来看:我是否可以将Excel数据导入?
 
评论
     查看或发表更多的评论,请单击这里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期:2000年4月2日  |  设计施工:陈格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陈格 保留所有权利