0

Access DB 导入固定宽度的文本文件;一列主要是日期。当日期不可用时,文件的创建者实际上使用字符串“Null”Access 将行放入表中,该字段实际上为空。

但是,当文件开始具有不同的字段宽度时,我复制了数据库,调整了输入规范中的起始/宽度值,然后导入。现在,所有带有 null 的行都登录 (table)_import_errors 作为将文本转换为日期的错误。

我没有找到任何设置(不是我更改任何设置)来解释它。一个区别是,虽然两个 DB 都是 Access 2000 格式,但原始数据库位于仍然具有 Access 2000 的计算机上,而新数据库由 Access 2003 处理。

这是 Access 版本中的行为变化吗?预处理文件是唯一的解决方案吗?


谢谢,大卫。如果它没有自行修复,这就是我会做的(除了 Excel 部分)。我发布了那个,但显然有人不喜欢公开承认 Access 有错误。

唯一改变的是 固定宽度纯文本输入中的另外两列更宽。然而,Access“决定”放弃整行而不是仅仅连续三次尝试的日期字段。第四次,它仍然报告它为错误,但导入了该行的其余部分。

因此,当 Access 无缘无故出现异常时,请再试一两次,然后尝试显式编码文本转换。

4

1 回答 1

0

两种可能:

  1. 使用将日期字段导入文本字段的缓冲区字段或缓冲区表。然后,您可以将其处理为最终目标字段中的适当值。

  2. 使用 SQL 导入而不是 DoCmd.TransferText。在这种情况下,您要做的是在 FROM 子句中使用连接字符串,这样您就可以处理 SELECT 中的日期字段:

  选择 Sheet1.FirstField,替换(Sheet2.DateField,“NULL”,Null)作为 DateField
  FROM Sheet1 IN 'C:\Import\Spreadsheet.xls'[Excel 5.0;HDR=YES;IMEX=1;];

将其转换为 INSERT 查询,您就很成功了。

于 2011-07-01T21:33:03.640 回答