2010-06-28 88 views
0

我不知道为什么我不能在2007年获得通过VBA当我创建一个查询自己执行该SQL查询,可以执行:错误3075运行SQL 2007年时VBA

Private Sub SQL_Click() 

Dim curDatabase As Database 
Dim RS_REPORT As Recordset 

Set curDatabase = CurrentDb 
Set RS_REPORT = _ 
curDatabase.OpenRecordset("REPORT_CONTENT_ARCHIVE", dbOpenDynaset) 

strStatement = "SELECT REPORT_CATEGORY1.DESCRIPTION, REPORT_CATEGORY2.DESCRIPTION, REPORT_CATEGORY3.DESCRIPTION, REPORT_RECOMMENDATION.RECOMMENDATION, REPORT_CONTENT_ARCHIVE.REPORT_UID, REPORT_CONTENT_ARCHIVE.CATEGORY1_ID, REPORT_CONTENT_ARCHIVE.CATEGORY2_ID, REPORT_CONTENT_ARCHIVE.CATEGORY3_ID" & _ 
"FROM (REPORT_CATEGORY1 RIGHT JOIN REPORT_CATEGORY2 ON REPORT_CATEGORY1.CATEGORY1_ID=REPORT_CATEGORY2.CATEGORY1_ID) RIGHT JOIN (REPORT_CATEGORY3 RIGHT JOIN (REPORT_CONTENT_ARCHIVE INNER JOIN REPORT_RECOMMENDATION ON (REPORT_CONTENT_ARCHIVE.CATEGORY3_ID=REPORT_RECOMMENDATION.CATEGORY3_ID) AND (REPORT_CONTENT_ARCHIVE.CATEGORY2_ID=REPORT_RECOMMENDATION.CATEGORY2_ID) AND (REPORT_CONTENT_ARCHIVE.CATEGORY1_ID=REPORT_RECOMMENDATION.CATEGORY1_ID)) ON (REPORT_CATEGORY3.CATEGORY2_ID=REPORT_RECOMMENDATION.CATEGORY2_ID) AND (REPORT_CATEGORY3.CATEGORY1_ID=REPORT_RECOMMENDATION.CATEGORY1_ID) AND (REPORT_CATEGORY3.CATEGORY3_ID=REPORT_RECOMMENDATION.CATEGORY3_ID)) ON (REPORT_CATEGORY2.CATEGORY2_ID=REPORT_CATEGORY3.CATEGORY2_ID) AND (REPORT_CATEGORY2.CATEGORY1_ID=REPORT_CATEGORY3.CATEGORY1_ID)" & _ 
"WHERE (((REPORT_CONTENT_ARCHIVE.REPORT_UID)=12));" 



Set qryMRSA = curDatabase.CreateQueryDef("DATABASE_RECOMMENDATION_1", strStatement) 


End Sub 

我收到错误3075,这是什么?

谢谢!

+0

请为您的子添加错误处理程序并写入错误描述。你在哪一行得到这个错误? 也检查您的查询字符串。看起来你在FROM和WHERE之前缺少空格。 – hgulyan 2010-06-28 05:09:17

+0

我想你会把这个问题分解成几行。 – 2010-06-28 15:22:30

回答

2

这可能是一些显而易见的,但如果你的SQL字符串在你的代码,你在这里写它到底 writen,你FROMWHERE之前需要一个aditional的空间。

找出问题的另一种方法是使用Debug.Print strStatement打印SQL字符串,并将其复制到新的空白查询对象,然后查看它是否有效。

希望这是有帮助的

+0

是的,“空间”的问题,谢谢! – lokheart 2010-06-29 10:39:33