Ms access MS Access设置忽略日期转换错误

Ms access MS Access设置忽略日期转换错误,ms-access,date,importerror,Ms Access,Date,Importerror,Access DB导入固定宽度的文本文件;其中一列主要是日期。 当日期不可用时,文件的创建者实际上使用空字符串 Access将该行放入表中,该字段实际为空 但是,当文件开始具有不同的字段宽度时,我复制了DB,在输入规范中调整了起始/宽度值,并导入了。现在,表中所有带有null get LOGING的行都将导入错误作为将文本转换为日期的错误 我没有发现任何设置,也没有更改任何设置来解释它。一个区别是,尽管两个数据库都采用Access 2000格式,但原始数据库位于仍具有Access 2000的机器

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

但是,当文件开始具有不同的字段宽度时,我复制了DB,在输入规范中调整了起始/宽度值,并导入了。现在,表中所有带有null get LOGING的行都将导入错误作为将文本转换为日期的错误

我没有发现任何设置,也没有更改任何设置来解释它。一个区别是,尽管两个数据库都采用Access 2000格式,但原始数据库位于仍具有Access 2000的机器上,而新数据库则由Access 2003处理

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

谢谢,大卫。如果Excel部分没有自行修复的话,我本来会这样做的,但Excel部分除外。我发布了,但显然有人不喜欢公开承认访问有漏洞

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

因此,当Access无正当理由出现错误时,请重试一两次,然后尝试显式地对文本转换进行编码。

有两种可能:

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

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


将其转换为插入查询,您就成功了。

您暗示有人删除了您的某些内容,因为您认为Access存在漏洞,我不知道您在说什么。这是一个相当严重的指控。访问在这里并不是行为不端——它是按照设计的方式进行的。你不知道如何告诉它如何正确地做事情并不是Access中的一个缺陷。评论vs.回答:因为某种原因,那天stackoverflow不允许我发表评论。出现此问题的原因是Access开始丢弃带有转换错误的记录/行。之前的行为是报告converion错误,并仅放弃该字段。当之前的行为在几次尝试后返回时,我发布了这个事实,但有人删除了它。至于他们为什么删除它,那只是猜测。但是我在发布后肯定在网站上看到了,但是当你回复时,它已经不见了。行为不端:你不是有点私心吗?我更改了输入规范中两列的宽度,Access更改了在其他一列中解释字符串Null的规则。然后,在我没有进一步更改的情况下,Access恢复了以前处理Null的方式。我称之为行为不端。 SELECT Sheet1.FirstField, Replace(Sheet2.DateField, "NULL", Null) As DateField FROM Sheet1 IN 'C:\Import\Spreadsheet.xls'[Excel 5.0;HDR=YES;IMEX=1;];