Access97 VBA Экспорт в формат CSV проблема - PullRequest
0 голосов
/ 15 апреля 2011

У меня есть база данных access97, и я пытаюсь написать некоторый код для экспорта в файл CSV - (я новичок в VBA).

У меня это работает, однако есть одно поле, которое яэкспорт - это валюта, поэтому в ней, например, 3 456,00 фунтов стерлингов - когда я экспортирую в CSV, я получаю именно это - однако мне нужно, чтобы это было просто число, то есть 3456,00.

По аналогичной проблеме - у меня естьдата дд / мм / гггг, и мне интересно, есть ли способ преобразовать это в VBA в гггг-мм-дд?

Пожалуйста, имейте в виду, что любые решения должны быть простыми из-за моих ограниченных знаний!

1 Ответ

1 голос
/ 28 апреля 2011

Извините за задержку; казалось бы, простые вещи заняли больше времени. Как я предполагаю из вашего:

DoCmd.TransferText acExportDelim, "olly_csv", "olly aorder export", "\\10.0.0.38\nw_upload\aorders.csv"

что у вас есть спецификация экспорта "olly_csv", которая определяет, как экспортировать набор результатов запроса SELECT "экспорт olly aorder" в файл "aorders.csv" в папке назначения "\ 10.0.0.38 \ nw_upload".

Простой способ экспортировать поле (поля) ВАЛЮТА в виде простого числа Double / Float / Single и поле (поля) ДАТА с выбранным форматом (дд / мм / гггг) будет запросите только это в спецификации экспорта. Я не нашел способа сделать это в Access 2000 (Насколько я вижу, способы выбора форматов даты ограничены, но функции мастера импорта для работы с типами столбцов не реализуются Мастер экспорта).

Документы о "TransferText" (извините, Access 2003) состояние:

   SpecificationName  Optional Variant. A string expression that's the name of
   an import or export specification you've created and saved in the current
   database. For a fixed-width text file, you must either specify an argument or
   use a schema.ini file, which must be stored in the same folder as the
   imported, linked, or exported text file. To create a schema file, you can use
   the text import/export wizard to create the file. For delimited text files
   and Microsoft Word mail merge data files, you can leave this argument blank
   to select the default import/export specifications.

Теперь есть в школах Microsoft Docs филологии: оптимисты будут читать это как: если вы не передаете спецификацию экспорта и не имеете подходящего schema.ini файл, то процесс экспорта будет придерживаться спецификаций в файле. Пессимисты скажет: Microsoft никогда не соглашался исполнить ваши несбыточные мечты - если вы этого не сделаете укажите аргумент для файла не фиксированной ширины, команда TransferText используйте неясную спецификацию экспорта по умолчанию (пожалуйста, платите консультанту искать и изменять).

Давайте будем оптимистами!

Итак, создайте файл schema.ini с разделом для «aorders.csv». Для моих тестов я использовал стол

Tabelle: OlliesOrders 
 Name    Typ           Größe
 OrderId Long Integer   4
 Amount  Währung        8
 DateDue Datum/Uhrzeit  8

(извините за немецкий; сумма - валюта, дата / время даты / времени). Для этой таблицы раздел schema.ini выглядит так:

[aorders.csv]
ColNameHeader=True
CharacterSet=1252
Format=Delimited(;)
DateTimeFormat=dd/mm/yyyy
Col1=OrderId Integer
Col2=Amount Float
Col3=DateDue Date

Вам придется адаптировать этот пример к вашим полям. Вы хотите заголовки столбцов? Это Кодовая страница Windows хорошо? А как насчет разделителей полей? Я должен был использовать; (Немецкий язык), вы может потребоваться "Format = CSVDelimited". Посмотрите здесь для некоторого фона. Затем позвоните

DoCmd.TransferText acExportDelim, , "olly aorder export", "\\10.0.0.38\nw_upload\aorders.csv"

и проверьте, правят ли оптимисты.

Для пессимистов:

Создать новый запрос к таблице для экспорта (из). Измените тип на Ausführung / Execute (?) и редактировать SQL, пока он не будет выглядеть так:

SELECT OlliesOrders.* INTO [aorders.csv] IN 'M:\trials\23forum\SOTrials\txt' [TEXT;] FROM OlliesOrders;

соответственно:.

SELECT YourFieldsList INTO [aorders.csv] IN '\\10.0.0.38\nw_upload' [TEXT;] FROM YourTable;

и выполните его (из окна запроса или подпрограммы макро / модуля). Мой результат:

"OrderId";"Amount";"DateDue"
1;1411,09;29/04/2011
2;123,45;13/04/2011

ДОБАВЛЕНО: Доказательство того, что вы не можете указать типы в мастере экспорта:

Экспорт Export Wizard

Импорт Import Wizard

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...