Доступ к экспортному запросу в виде текста с верхним и нижним колонтитулом

Я исследовал эту проблему все выше и ниже, чтобы найти ответ или хотя бы шаблон.

Я использую 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 и т. Д.).

Другие вопросы по тегам