MoveFirst在第一次调用时工作,在第二次调用时失败

时间:2015-04-02 16:22:59

标签: vba ms-access-2007

我正在创建一个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都不与第一种情况相同。

1 个答案:

答案 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'

对不起我的英语)