2014-02-16 18 views
0

我想为我的访问数据库使用SQL编写一个简单的追加查询。试图执行代码时,我得到的消息是:预期的功能/可变错误消息

Complilation error。被执行的函数或变量

该查询是一个查询,它连接4个表并将这些字段粘贴到另一个表中。当使用标准的MS Access查询时,它工作正常。然后我生成并复制了SQL代码(如下),但不幸的是无法使查询生效。

关于奇怪的事情的最后说明。与我成功编写的所有其他SQL查询不同,在将Application.DoCmd.RunSQL(st_sql)写入VBA时,由于某种原因,“L”和“(st_sql)之间的空间被截断。奇怪的是,这并不发生在整个套路其他任何字符串,其中我成功有其他追加查询

下面是代码:

st_sql = "INSERT INTO[tblContactReporting03]([ID Project],[tblProjManagementPhaseHierarchy],[tblProjManagementSubPhaseHierarchy],[ID_Event],[SubTask_Hierarchy],[Project],[Sub project],[Project_Phase],[Project_Sub_Phase],[ContactFullName],[Role_Type],[type],[Event],[Effective_date],[Commitment],[Sub_task_name],[Status],[Notes])" & _ 
      "SELECT[tblProjectMasterList].[ID Project],[tblProjManagementPhase].[Hierarchy],[tblProjManagementSubPhase].[Hierarchy],[tblContactReporting02].[ID_Event],[tblContactReporting02].[SubTask_Hierarchy],[tblProjectMasterList].[Project],[tblProjectMasterList].[Sub project],[tblProjManagementPhase].[Project_Phase],[tblProjManagementSubPhase].[Project_Sub_Phase],[tblContactReporting02].[ContactFullName],[tblContactReporting02].[Role_Type],[tblContactReporting02].[type]," & _ 
      "[tblContactReporting02].[Event], [tblContactReporting02].[Effective_date],[tblContactReporting02].[Commitment],[tblContactReporting02].[Sub_task_name],[tblContactReporting02].[Status],[tblContactReporting02].[Notes]" & _ 
      "FROM[tblProjectMasterListINNER JOIN ([tblProjManagementPhase] INNER JOIN ([tblContactReporting02] INNER JOIN [tblProjManagementSubPhase] ON [tblContactReporting02].[ID_Project_Sub_Phase] = [tblProjManagementSubPhase].[ID_Project_Sub_Phase]) ON ([tblContactReporting02].[ID_Project_Phase] = [tblProjManagementPhase].[ID_Project_Phase]) AND ([tblProjManagementPhase].[ID_Project_Phase] = [tblProjManagementSubPhase].[ID_Project_Phase])) ON [tblProjectMasterList].[ID Project] = [tblProjManagementPhase].[ID_Project]" & _ 
      "ORDER BY [tblProjectMasterList].[ID Project], [tblProjManagementPhase].[Hierarchy], [tblProjManagementSubPhase].[Hierarchy], [tblContactReporting02].[ID_Event], [tblContactReporting02].[SubTask_Hierarchy];" & _ 
Application.DoCmd.RunSQL(st_sql) 

回答

1

我推荐一个Debug.Print st_sql运行,这样你就可以前调试构建的SQL。

你得到的错误是因为RunSQL是一个子,而不是一个功能,所以你需要调用它1)不使用括号:

Application.DoCmd.RunSQL st_sql 

或2)呼叫preceed,并用括号:

Call Application.DoCmd.RunSQL(st_sql) 

您可以使用语法2的功能,当你不不需要使用他们的回报价值。

+0

谢谢pteranodon。这很有趣,因为我常常使用这些代码进行例程,并且从来没有遇到过这个问题。也许是因为包含了4个连接,它更复杂..?谢谢..但是,尝试后,我现在正在加入操作语法错误..这是否只是意味着,也许你的解决方案是正确的,但我仍然没有在DoCmd.RunSQL之前正确写入代码? –

+0

嗨。只是为了让你知道我发现语法错误..现在我的问题是,我收到有关第一部分“INSERT INTO”行,指出该字段[tblContactReporting03]。[ID项目]未知..奇怪,因为它肯定存在并拼写正确。 –

+0

我找到了.. !!!非常感谢您的帮助.. –

相关问题