#vba #ms-access #csv
#vba #ms-access #csv
Вопрос:
Я попытался сохранить такой файл csv в таблице:
XValue, YValue, Wert, Name, FzgID
, , "CARB (Evap Denom)", DIUMPR_CldStrtDenCldStrtTyp_C, 238
, , 800.0000000000000000, DIUMPR_ctGen.l500MD_C, 238
, , 10000.0000000000000000, DIUMPR_ctGen.l500MDInc_C, 238
, , 600.0000000000000000, DIUMPR_ctGen.nIgnMin_C, 238
, , 740.0000000000000000, DIUMPR_ctGen.pEnvMin_C, 238
, , 5.0048828125000000, DIUMPR_ctGen.rAPPMax_C, 238
Я использую этот код:
DoCmd.TransferText acImportDelim, , "tb_DCM_Daten", Filename, True
Моя проблема в том, что для первой строки в файле csv. Он не сохраняется CARB (Evap Denom)"
в Wert
поле в таблице. другие строки сохраняются без каких-либо проблем.
Если у меня есть файл cvs, содержащий только одну строку, подобную этой:
XValue, YValue, Wert, Name, FzgID
, , "CARB (Evap Denom)", DIUMPR_CldStrtDenCldStrtTyp_C, 238
эта строка будет правильно сохранена в таблице в базе данных также с "CARB (Evap Denom)"
может кто-нибудь сказать мне причину этого события?
Ответ №1:
Вы опустили второй аргумент метода TransferText. Этот аргумент является SpecificationName , который является именем спецификации импорта, которая сообщает Access, какими должны быть имена и типы полей для этого конкретного импорта.
Без спецификации импорта Access просмотрит первые несколько строк файла CSV и «угадает», какими должны быть типы полей. В вашем случае — за исключением первой строки данных — [Wert] выглядит как числовое поле, так что это то, что создает Access. Значение из первой строки данных не импортируется, поскольку оно не подходит для Number (Double)
поля.
У вас есть как минимум два варианта:
(1) Вы можете создать спецификацию импорта, выполнив ручной импорт в Access, нажав кнопку «Дополнительно …», изменив тип (ы) поля и нажав кнопку «Сохранить как …» …
… затем включите имя спецификации импорта в качестве второго аргумента вашего вызова TransferText:
DoCmd.TransferText acImportDelim, "DCM Import Specification", "tb_DCM_Daten", Filename, True
… или …
(2) Сначала вы можете создать таблицу (с соответствующими именами и типами полей), а затем импортировать файл CSV в существующую таблицу.
Комментарии:
1. Большое вам спасибо, вы очень хорошо все объяснили