2012-02-26 3 views
1

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

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

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

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

ответ

2

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 
+0

Вместо создания текстового файла с помощью DoCmd.TransferText, а затем редактировать его с FileSystemObject, я, возможно, придется написать вывод запроса непосредственно в текстовый файл. Это возможно? – user793468

+0

Несомненно. Файловый объект FileSystemObject включает метод записи, который вы можете предпочесть для метода записи для этой цели. Это, безусловно, можно сделать, но моя реакция на кишок - это может потребовать гораздо больше кода, чем я предложил. Действуй! – HansUp

+0

Какие шаги мне нужно будет выполнить? Должен ли я открыть набор записей, а затем прокрутить вывод и написать каждую строку? – user793468

Смежные вопросы