【问题标题】:csv file is not saved completly in table vbacsv 文件未完全保存在表 vba 中
【发布时间】:2014-06-18 07:25:49
【问题描述】:

我尝试将这样的 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)"

有人能告诉我这个事件的原因吗?

【问题讨论】:

    标签: vba ms-access csv


    【解决方案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 文件导入现有表中。

    【讨论】:

    • 非常感谢,你解释得很好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 1970-01-01
    相关资源
    最近更新 更多