csv文件未完全保存在表vba中

时间:2014-06-18 07:25:49

标签: 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 个答案:

答案 0 :(得分:1)

您已经省略了TransferText方法的第二个参数。该参数是 SpecificationName ,它是导入规范的名称,它告诉Access该特定导入的字段名称和类型应该是什么。

如果没有导入规范,Access将查看CSV文件的前几行和" guess"在什么领域类型应该是。在您的情况下 - 除了第一行数据 - [Wert]看起来像一个数字字段,因此这是Access创建的。第一个数据行的值不会导入,因为它不适合Number (Double)字段。

您至少有两个选择:

(1)您可以通过在Access中执行手动导入来创建导入规范,单击"高级..."按钮,调整字段类型,然后单击"另存为..."按钮......

ImportSpec.png

...然后将Import Specification的名称作为TransferText调用的第二个参数:

DoCmd.TransferText acImportDelim, "DCM Import Specification", "tb_DCM_Daten", Filename, True

......或......

(2)您可以先创建表格(包含相应的字段名称和类型),然后将CSV文件导入现有表格。