我在Access 2010中遇到过反复但零星的问题,这些问题在查询中抛出了“查询太复杂”的错误,这些查询实际上并不是非常复杂,但涉及到相当多的记录(比如超过5000条)。这总是涉及到使用链接的SharePoint列表。
下面是一个示例(我要插入的表在SharePoint服务器上,其他表在我的驱动器上的Access文件中):
INSERT INTO [NR Info]
(Title,
[NR ID],
[Project],
[Sub-project],
[PD Number],
[WBS Number],
[Network],
[IA PO Activity],
[FA PO Activity],
[ASP],
[status],
[MS10],
[PO Status],
[2G/3G HW CPO],
[4G HW CPO],
[4G SW CPO],
[Additional HW CPO],
[Antenna HW CPO],
[2G/3G/4G HWAC CPO],
[Swap Prep CPO],
[VOD I&C CPO],
[Antenna Refresh CPO],
[Additional Services CPO],
[Decom CPO],
[Variances Build Services CPO],
[Unknown Variances CPO],
[Other CPO A],
[Other CPO B],
[Other CPO C],
[Other CPO D],
[Other CPO E] )
SELECT sh.[NR_Unique_ID],
sh.[NR_ID],
sh.[Project_lookup],
sh.[SubProject_lookup],
cn.[project_definition],
cn.[wbs_element],
cn.[network],
cpo.[IAPO_activity],
cpo.[FAPO_activity],
sh.[ASP_lookup],
sh.[Status],
cpo.[MS10],
cpo.[cpo_state],
cpo.[2G3G_HW_State],
cpo.[4G_HW_State],
cpo.[4G_SW_State],
cpo.[Addl_HW_State],
cpo.[Antenna_HW_State],
cpo.[2G3G4G_HWACS_State],
cpo.[Swap_Prep_State],
cpo.[VOD_IC_State],
cpo.[Antenna_Refresh_State],
cpo.[Addl_Serv_State],
cpo.[Decom_State],
cpo.[Var_Build_State],
cpo.[Unknown_Var_State],
cpo.[Other_POA_State],
cpo.[Other_POB_State],
cpo.[Other_POC_State],
cpo.[Other_POD_State],
cpo.[Other_POE_State]
FROM (Staging_SH_keyData AS sh
LEFT JOIN Staging_SAP_CN AS cn ON sh.[NR_ID] = cn.[nr_id])
LEFT JOIN staging_SH_cpoStatus AS cpo ON sh.[NR_Unique_ID] = cpo.[NR_Unique_ID]
WHERE sh.[NR_Unique_ID] NOT IN (SELECT [title] FROM [NR Info]);这将是另一个在处理大型记录集时也会导致问题的问题。我尝试使用它将大约13,000行从我的本地文件插入到Sharepoint服务器。我最终不得不在SELECT上临时使用TOP1000,并运行查询13+次数。即使在那时,我也会定期收到错误,尽管关闭文件并重新打开它可以修复它几次。我有时也会遇到与“系统资源”相关的问题。
INSERT INTO [Order Items]
([Title],
[Order Item],
[NR ID],
[Vfe Material ID],
[E/// Material Num],
[Material Description],
[Item Category],
[Quantity Ordered],
[Date Requested],
[Requester],
[Item Request Status],
[PO2 Number],
[PO2 Line Number],
[PO Technical Check],
[PO Accepted Date],
[SO Number],
[SO Line Number],
[SO Line Status],
[SO Item Quantity],
[SO Release Date],
[SO Activated Date],
[Event Day],
[MS10])
SELECT [Order_Item],
[Order_Item],
(SELECT TOP 1 [id] FROM [NR Info] nri WHERE nri.[NR ID]=soi.[NR_ID]),
[VF_SAP_Material],
[Mat_Num],
[Mat_Desc],
[Mat_Cat],
[Order_Quan],
[Request_Date],
[Requester],
[Item_ReqStatus],
[PO2_Num],
[PO2_LineNum],
[PO_TechCheck],
[PO_AcceptedDate],
[SO_Num],
[SO_LineNum],
[SO_LineStatus],
[SO_Quantity],
[SO_RelDate],
[SO_ActivatedDate],
[EventDay],
[MS10]
FROM Staging_OrderItems AS soi
WHERE soi.[Order_Item] NOT IN (SELECT [Title] FROM [Order Items]);非常感谢您的帮助!
发布于 2016-08-24 01:14:10
根据this article
JET在任何时候都会给出这个通用的消息,它不能准确地指出哪里出了问题。原因可能是分隔符错误、数据类型解释错误、括号不匹配、使用保留字作为表或字段名称或别名、与名称AutoCorrect混淆或其他许多可能性。
解决方案
在大多数情况下,解决方案是找出Access不理解的部分。检查表达式、联接和条件中的数据类型是否匹配。在需要的地方显式类型转换。显式声明参数,因此JET知道它们的类型。
确认您的姓名(表、字段、别名)不在保留字列表中。在任何可疑名称周围添加方括号,并明确指定其源表,例如“从...选择Table1.Name ...”而不是"SELECT Name FROM ...“
确保名称AutoCorrect处于禁用状态。然后压缩/修复数据库。
如有必要,请分解查询以查找问题。删除一半的WHERE子句,省略GROUP BY子句,直到查询生效。然后开始重新添加东西,直到你找到罪魁祸首。
有时,查询实际上太复杂:太多的联合、超过32个表、WHERE子句中的100个AND或超过50层的嵌套查询。有关限制的列表,请打开Access主窗口中的帮助,然后输入规范。在Access 2007中,转至帮助主题HA10030739。
https://stackoverflow.com/questions/39106995
复制相似问题