将导出查询作为带有页眉和页脚的文本访问
Posted
技术标签:
【中文标题】将导出查询作为带有页眉和页脚的文本访问【英文标题】:Access export query as text with header and footer 【发布时间】:2016-09-09 19:49:23 【问题描述】:我一直在研究这个问题,以获得答案或至少一个模板。
我使用的是 MS Access 2007。我需要将查询导出为具有固定宽度规格的文本文件(已经完成)。我遇到的问题是我必须在导出后附加一个特定的页眉和页脚。标头必须有当前日期,尾标必须有要导出的总项目数。
诚然,我有点不知所措,但通常会偶然发现一些执行类似操作的 VBA 代码。
谁能帮忙?
【问题讨论】:
创建一个包含当前日期“字段”之后的虚拟字段的单行标题查询和一个包含项目总数和相同的虚拟空白“字段”的尾部查询。然后在导出之前将它们全部加入一个联合查询中......它可能只是工作 【参考方案1】:没有任何方法可以在导出中定义额外的文本行。
我假设您正在使用 TransferSpreadsheet 方法以固定宽度格式导出查询。这通常是生成固定宽度内容的正确方法,无论是否带有字段标题。
但是如果你想在数据内容之前和之后添加行到文件中,那么你需要打开现有文件,创建一个新文件,附加标题行,然后将现有文件中的数据附加到新文件,然后附加页脚行,然后关闭这两个文件。
您可以使用内置的 VBA 函数来处理文件,但我发现 Scripting.Runtime 库提供了更直观、面向对象的文件处理方式。
您需要在 Tools..References..中添加对 Microsoft Scripting Runtime 库的引用。
Sub EnhanceExportedFile()
Const exportedFilePath As String = "C:\Foo.txt"
Const newFilePath As String = "C:\NewFoo.txt"
Dim fso As Scripting.FileSystemObject
Dim exportedFile As TextStream
Dim newFile As TextStream
Dim rowCount As Long
Set fso = New Scripting.FileSystemObject
Set exportedFile = fso.OpenTextFile(exportedFilePath, ForReading, False)
Set newFile = fso.CreateTextFile(newFilePath, True)
'Append the date in ISO format
newFile.WriteLine Format(Now, "yyyy-mm-dd")
'Append each line in the exported file
Do While Not exportedFile.AtEndOfStream
newFile.WriteLine exportedFile.ReadLine
rowCount = rowCount + 1
Loop
'Append the total exported lines
newFile.WriteLine rowCount
'Close both files
exportedFile.Close
newFile.Close
End Sub
【讨论】:
【参考方案2】:使用联合查询。 假设您的查询具有字段 ID(自动编号、长)、名字、姓氏,并且您的表名是 tablexx。如果您有连续的 id,它可能是这样的:
创建查询。 从tablexx order by id中选择0作为id,format(date(),"dd/mm/yyyy")作为名字,""作为姓氏,""作为nextfield等;
和一个查询 选择 9999999999(比您预期的 id 大得多)作为 id,(从 tablexx 中选择 count(id))作为名字,“”作为姓氏,“”作为 nextfield 等从 tablexx 按 id 排序;
现在做三者的联合。甚至可以放入空行(id = 1 等)。
【讨论】:
以上是关于将导出查询作为带有页眉和页脚的文本访问的主要内容,如果未能解决你的问题,请参考以下文章
在所有页面上打印带有页眉和页脚的 HTML 报告 - Firefox