Доступ к экспортному запросу в виде текста с верхним и нижним колонтитулом
Я исследовал эту проблему все выше и ниже, чтобы найти ответ или хотя бы шаблон.
Я использую MS Access 2007. Мне нужно экспортировать запрос в виде текстового файла с фиксированной шириной спецификации (уже сделано). Проблема (и), с которой я сталкиваюсь, заключается в том, что к экспорту необходимо добавить определенный верхний и нижний колонтитулы. Заголовок должен иметь текущую дату, а трейлер должен иметь общее количество экспортируемых предметов.
По общему признанию, у меня над головой, но обычно я могу наткнуться на некоторый код VBA, который делает нечто подобное.
Кто-нибудь может помочь?
2 ответа
Нет никакого способа определить дополнительные строки текста в экспорте.
Я предполагаю, что вы используете метод TransferSpreadsheet для экспорта вашего запроса в формате фиксированной ширины. Обычно это правильный подход для генерации контента с фиксированной шириной, с заголовками полей или без них.
Но если вы хотите добавить строки в файл до и после содержимого данных, вам нужно открыть существующий файл, создать новый файл, добавить строки заголовка, а затем добавить данные из существующего файла в новый файл., а затем добавьте строки нижнего колонтитула, затем закройте оба файла.
Вы можете использовать встроенные функции VBA для работы с файлами, но я считаю, что библиотека Scripting.Runtime предлагает более интуитивно понятные, объектно-ориентированные способы работы с файлами.
Вам нужно будет добавить ссылку на библиотеку 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
Используйте запрос объединения. Предположим, что в вашем запросе есть поля ID (автоматический номер, длинный), имя, фамилия, а имя таблицы - tablexx. Если у вас есть последовательные идентификаторы, это может быть что-то вроде этого:
Создать запрос. Выберите 0 в качестве идентификатора, формат (date (), "дд / мм / гггг") в качестве имени, "" в качестве фамилии, "" в качестве следующего поля и т. Д. И т. Д. Из таблицы XXX по порядку идентификаторов;
и запрос
Выберите 9999999999 (намного больше ожидаемого идентификатора) в качестве идентификатора (выберите количество (идентификатор) из таблицы xx) в качестве имени, "" в качестве фамилии, "" в качестве следующего поля и т. Д. И т. Д. Из таблицы Tablexx по идентификатору;
Теперь сделайте союз трех. Можно ввести даже пустые строки (id = 1 и т. Д.).