【问题标题】:MS Access setting to ignore date conversion errorMS Access 设置忽略日期转换错误
【发布时间】:2011-07-01 14:31:02
【问题描述】:

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

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

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

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


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

唯一改变的是固定宽度的纯文本输入中的两个 other 列更宽了。然而,Access“决定”放弃整行而不是仅仅连续三次尝试的日期字段。第四次还是报错,但是导入了剩下的行。

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

【问题讨论】:

  • 我不知道您在暗示什么,因为您暗示 Access 存在错误,因此有人删除了您的某些内容。这是一个非常严重的指控。
  • Access 在这里并不是“行为不端”——它按照设计的方式行事。你不知道如何告诉它如何正确地做事并不是 Access 的缺陷。
  • 1.评论与回答:因为某种原因,那天的 stackoverflow 不允许我发表评论。
  • 2.问题的原因是 Access 开始丢弃带有转换错误的记录/行。 “之前”行为是报告转换错误,并仅丢弃该字段。几次尝试后,当先前的行为恢复时,我发布了这个事实,但有人删除了它。至于为什么他们删除了它,这只是一个猜测。但是我确实在发布后在网站上看到了它,但是当您回答时,它已经消失了。
  • 3.行为不端:你是不是有点个人化了 Access?我更改了输入规范中几列的 WIDTH,Access 更改了其在其他列中解释字符串“Null”的规则。然后,随着我 NO 的进一步改变,Access 又回到了以前的方式处理“Null”。我称之为行为不端。

标签: ms-access date importerror


【解决方案1】:

两种可能:

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

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

 SELECT Sheet1.FirstField, Replace(Sheet2.DateField, "NULL", Null) As DateField
  FROM Sheet1 IN 'C:\Import\Spreadsheet.xls'[Excel 5.0;HDR=YES;IMEX=1;];

将其转换为 INSERT 查询,您就可以了。

【讨论】:

    猜你喜欢
    • 2020-09-14
    • 2015-06-24
    • 2019-10-21
    • 1970-01-01
    • 2016-06-13
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    相关资源
    最近更新 更多