将一个链接表中的行插入另一个

时间:2013-08-27 13:30:18

标签: mysql excel vba ms-access access-vba

我在Access中有三个表:一个链接到Excel,一个链接到MySQL,一个名为LastQuery的本地表,只有一行和一列。我在带有计时器的表单中使用VBA查询从Excel表中选择数据并将其插入MySQL表。同时,我更新了我插入LastQuery的最后一条记录的dtmInsertedTime(标题为last的行),以便下次表单计时器滴答时,它将从下一个继续记录并继续,直到它插入每条记录。我的代码很简单,但我收到错误,无法按照我的描述使其工作。这是我的代码:

Private Sub Form_Timer()
CurrentDb.Execute "INSERT INTO tblevent (vchrFacility, intWorkCell, intStn, intEventCode) SELECT vchrFacility, intWorkCell, intStn, intEventCode from excelTblEvent where dtmInsertedTime > LastQuery.Last"
CurrentDb.Execute "UPDATE LastQuery, excelTblEvent SET LastQuery.Last = excelTblEvent.dtmInsertedTime"
End Sub

编辑:

没有你们,我不可能做到这一点。我的代码完全符合我的要求,没有任何问题:

Option Compare Database
Private Sub Form_Timer()
CurrentDb.Execute "INSERT INTO tblevent (vchrFacility, intWorkCell, intStn, intEventCode) SELECT vchrFacility, intWorkCell, intStn, intEventCode FROM excelTblEvent WHERE dtmInsertedTime > DLookup('Last', 'LastQuery')"
CurrentDb.Execute "UPDATE LastQuery, excelTblEvent SET LastQuery.Last = excelTblEvent.dtmInsertedTime"
End Sub

2 个答案:

答案 0 :(得分:0)

Database.Execute方法帮助部分中的注释说明

  

Microsoft Office Access 2007不支持ODBCDirect工作区。如果要在不使用Microsoft Access数据库引擎的情况下访问外部数据源,请使用ADO。

你可能必须走这条路。

答案 1 :(得分:0)

Access'db引擎会抱怨INSERT语句。检查语句的SELECT部分:

SELECT vchrFacility, intWorkCell, intStn, intEventCode
from excelTblEvent
where dtmInsertedTime > LastQuery.Last

WHERE子句引用数据源LastQueryFROM子句中未提及该数据源。那不行。我们需要了解更多关于LastQuery的信息,但作为一个疯狂的猜测,也许这可能有用......

WHERE dtmInsertedTime > DLookup("Last", "LastQuery")

如果Access抱怨UPDATE语句,请在查询设计器中重新构建它。在使用它之后,调整您的VBA代码以使用相同的工作SQL。