我有一个 csv 文件需要导入到 MS Access 中。我正在使用 VBA。我正在使用的特定脚本行是
DoCmd.TransferText acImportDelim, , "csvImport", sFileOut, False
文件导入,但缺少部分字段数据。导入过程似乎将 1-20-0032 转换为 1/20/0032,将 1-23-WRTY 转换为 NULL。
举个简单的例子,如果我的 csv 文件包含以下内容...
A, 1-20-0032, 2-101, 03/12/2023, 03/17/2023, 10, 439.9 A, 1-23-WRTY, 50-200, 03/12/2023, 03/17/2023, 16, 852
它像这样进入桌子......
一个| 0032 年 1 月 20 日 | 2-101 | 2023 年 3 月 12 日 | 2023 年 3 月 17 日 | 10 | 439.9 | 一个| | 2-101 | 2023 年 3 月 12 日 | 2023 年 3 月 17 日 | 10 | 439.9 |
除值 1-23-WRTY 外,一切正常
我已经解决了 1-23-0032 导入为 1/20/0032 的问题,方法是在导入完成后将该列中的值的“/”更新为“-”。但是,我不知道如何解决未导入的值。
任何帮助将不胜感激!!
如果我手动导入 csv 文件,我可以获得要通过的值。 但是,用户需要能够单击按钮来导入文件。所以那是行不通的。 我曾尝试使用 VBA 导入到通过手动过程创建的同一个表中。不起作用。即使该字段设置为短文本,它也会将该列带入 / 而不是 - 并删除以字母结尾的字段数据。 (它似乎总是认为该字段是一个日期。在导入规范中我指出日期标识符是 /。但是,在导入时它仍然替换 - 为 /
DoCmd.TransferText 尝试从前 n 行中确定最佳数据类型。
列被读取为日期,当“日期”无效时,它导入空值。
尝试将文件 schema.ini 放在要导入的 txt 文件所在的同一文件夹中,并放置此选项
[NAME_OFF_THE_FILE_TO_IMPORT.txt]
ColNameHeader=真
格式=CSVDelimited
MaxScanRows=0
字符集=ANSI
MaxScanRows=0 将强制 DoCmd.TransferText 读取所有文件以确定最佳数据类型