我正在创建一个Access 2007数据库,其中包含两个表(申请人和机会)和一个链接表(申请人 - 机会)。我使用VBA从另一个表中的平面文件填充这些表。用于检查链接表中是否已存在记录的代码是
szSQL = "((([Applicants-Opportunities].[User Id])="""
& rsInc![User Id] & """)
AND (([Applicants-Opportunities].[Opportunity Id])="""
& rsInc![Opportunity Id] & """))""
rsLnk.FindFirst szSQL
第一次通过,所有三个表都空白,此代码有效。第二次,我收到3070错误,说系统无法将“Applicants-Opportunities.User Id”识别为有效的字段名称。
我完全失去了。如果它第一次工作,为什么不是第二次?在第二种情况下,Id都不与第一种情况相同。
答案 0 :(得分:0)
.FindFirst方法将当前位置更改为第一个找到的记录并将属性.NoMatch更改为False。如果没有找到.NoMatch是真的。 如果需要搜索其他记录,可以使用.FindNext方法检查.NoMatch属性。 您可以在msdn中的manual中阅读。有例子。
但是,您可以使用sql作为目标。像这样:
UPDATE [Applicants-Opportunities] INNER JOIN [another table]
ON [Applicants-Opportunities].[User Id] = [another table].[User Id]
AND [Applicants-Opportunities].[Opportunity Id] = [another table].[Opportunity Id]
SET [Applicants-Opportunities].[SomeField] = 'SomeValue'
WHERE [Applicants-Opportunities].[SomeOtherField] = 'SomeOtherValue'
对不起我的英语)