экспорт вывода запроса в текстовый файл - PullRequest
1 голос
/ 26 февраля 2012

У меня есть запрос доступа, который я пытаюсь экспортировать в текстовый файл, используя следующий код:

DoCmd.TransferText acExportFixed, "Export Specification", _
    "Test Query", "C:\Users\Documents\TestOutput.txt", True

Проблема, с которой я столкнулся: Выходной файл "TestOutput.txt" содержит данные, отображаемые с фиксированной шириной, но заголовки столбцов разделяются запятыми. Я хочу, чтобы заголовки столбцов тоже были фиксированной ширины.

Что бы заголовки столбцов не отображались так же, как остальные данные?

1 Ответ

2 голосов
/ 26 февраля 2012

AFAICT, это неизбежная «особенность» TransferText. Кажется, что не хватает какого-либо встроенного интеллекта, чтобы сказать: «Хорошо, мы экспортируем как acExportFixed, поэтому давайте рассмотрим ширину столбцов, определенную в спецификации экспорта, и выведем заголовки столбцов, используя те же самые ширины». Вместо этого он просто дает имена столбцов в виде списка через запятую.

Как и все остальное в Access, когда его поведение по умолчанию неудовлетворительно, вы можете написать код VBA, чтобы сделать это по-своему.

Const VB_FORREADING = 1
Const VB_FORWRITING = 2
Const cstrFile As String = "C:\Users\Documents\TestOutput.txt"
Const cstrHeaderRow As String = "col1    col2    etc..."
Dim oFSO As Object
Dim oFile As Object
Dim strContents As String

' do TransferText without the field names '
' (HasFieldNames default = False) '
DoCmd.TransferText acExportFixed, "Export Specification", _
    "Test Query", cstrFile 

Set oFSO = CreateObject("Scripting.FileSystemObject")
' read file content into strContents string variable '
Set oFile = oFSO.OpenTextFile(cstrFile, VB_FORREADING)
strContents = oFile.ReadAll
oFile.Close
' re-write file using cstrHeaderRow plus strContents '
Set oFile = oFSO.OpenTextFile(cstrFile, VB_FORWRITING)
oFile.write cstrHeaderRow & vbCrLf & strContents
oFile.Close

Set oFile = Nothing
Set oFSO = Nothing
...