繁体   English   中英

“表达不正确或过于复杂”

[英]“Expression is either incorrect or too complex”

我相信我需要学习如何更优雅地编写以下代码。 问题是我正在处理一堆表(不是由我创建的表,否则我会简化为一个表。)而且我需要一次针对所有表查询信息。 我正在使用MS Access,目前这是我的SQL语句:

SELECT [Date (mm-dd-yy)], [Operator], [Operator Number], [Product Part Number], [Feet Produced], [Run Time], [Feet Produced]/[Run Time] AS [AVG Prod]
From [tblReports_16Braiding]
WHERE ((([Product Part Number])=[Forms]![AdminProdForm].[PartNumber]) AND [Date (mm-dd-yy)] Between [Forms]![AdminProdForm].[StartDate] And [Forms]![AdminProdForm].[EndDate]);
    Union
    SELECT [Date (mm-dd-yy)], [Operator], [Operator Number], [Product Part Number], [Feet Produced], [Run Time], [Feet Produced]/[Run Time] AS [AVG Prod]
From  [tblReports_24Braiding]
WHERE ((([Product Part Number])=[Forms]![AdminProdForm].[PartNumber]) AND [Date (mm-dd-yy)] Between [Forms]![AdminProdForm].[StartDate] And [Forms]![AdminProdForm].[EndDate]);
    Union
SELECT [Date (mm-dd-yy)], [Operator], [Operator Number], [Product Part Number], [Feet Produced], [Run Time], [Feet Produced]/[Run Time] AS [AVG Prod]
From [tblReports_Cabling]
WHERE ((([Product Part Number])=[Forms]![AdminProdForm].[PartNumber]) AND [Date (mm-dd-yy)] Between [Forms]![AdminProdForm].[StartDate] And [Forms]![AdminProdForm].[EndDate]);
Union
SELECT [Date (mm-dd-yy)], [Operator], [Operator Number], [Product Part Number], [Feet Produced], [Run Time], [Feet Produced]/[Run Time] AS [AVG Prod]
 From [tblReports_CompChain]
WHERE ((([Product Part Number])=[Forms]![AdminProdForm].[PartNumber]) AND [Date (mm-dd-yy)] Between [Forms]![AdminProdForm].[StartDate] And [Forms]![AdminProdForm].[EndDate]);
Union
SELECT [Date (mm-dd-yy)], [Operator], [Operator Number], [Product Part Number], [Feet Produced], [Run Time], [Feet Produced]/[Run Time] AS [AVG Prod]
From [tblReports_Jacketing]
WHERE ((([Product Part Number])=[Forms]![AdminProdForm].[PartNumber]) AND [Date (mm-dd-yy)] Between [Forms]![AdminProdForm].[StartDate] And [Forms]![AdminProdForm].[EndDate]);
Union
SELECT [Date (mm-dd-yy)], [Operator], [Operator Number], [Product Part Number], [Feet Produced], [Run Time], [Feet Produced]/[Run Time] AS [AVG Prod]
From [tblReports_Primary]
WHERE ((([Product Part Number])=[Forms]![AdminProdForm].[PartNumber]) AND [Date (mm-dd-yy)] Between [Forms]![AdminProdForm].[StartDate] And [Forms]![AdminProdForm].[EndDate]);
Union
SELECT [Date (mm-dd-yy)], [Operator], [Operator Number], [Product Part Number], [Feet Produced], [Run Time], [Feet Produced]/[Run Time] AS [AVG Prod]
From [tblReports_Printing]
WHERE ((([Product Part Number])=[Forms]![AdminProdForm].[PartNumber]) AND [Date (mm-dd-yy)] Between [Forms]![AdminProdForm].[StartDate] And [Forms]![AdminProdForm].[EndDate]);
Union
SELECT [Date (mm-dd-yy)], [Operator], [Operator Number], [Product Part Number], [Feet Produced], [Run Time], [Feet Produced]/[Run Time] AS [AVG Prod]
From [tblReports_Respool]
WHERE ((([Product Part Number])=[Forms]![AdminProdForm].[PartNumber]) AND [Date (mm-dd-yy)] Between [Forms]![AdminProdForm].[StartDate] And [Forms]![AdminProdForm].[EndDate]);
UNION SELECT [Date (mm-dd-yy)], [Operator], [Operator Number], [Product Part Number], [Feet Produced], [Run Time], [Feet Produced]/[Run Time] AS [AVG Prod]
 From [tblReports_Stranding]
WHERE ((([Product Part Number])=[Forms]![AdminProdForm].[PartNumber]) AND [Date (mm-dd-yy)] Between [Forms]![AdminProdForm].[StartDate] And [Forms]![AdminProdForm].[EndDate]);

简而言之,我只是试图将大量的表合并在一起。 全部具有相同的字段,从另外两个字段的简单划分中创建一个新字段,然后使用表单查询联合表。 每当我现在运行此命令时,都会收到一个错误,提示我的SQL错误或过于复杂。 我猜测太复杂了,因为我正在处理九个表中的20,000多个记录。

编辑~~~

在删除我最大的表(大约8000个条目)上的Expression操作后,代码可以正常工作。 进行此操作:

[Feet Produced]/[Run Time] AS [AVG Prod]
    From  [tblReports_24Braiding]

我在查询中需要此字段。 我无法在表本身中执行此操作,因为它是链接表,因此无法保存对其的更改。

显式声明参数以使Access免受猜测:

PARAMETERS
    [Forms]![AdminProdForm].[PartNumber]) Long,
    [Forms]![AdminProdForm].[StartDate] DateTime,
    [Forms]![AdminProdForm].[EndDate] DateTime;

SELECT 
    [Date (mm-dd-yy)], [Operator], [Operator Number], [Product Part Number], [Feet Produced], [Run Time], [Feet Produced]/[Run Time] AS [AVG Prod]
FROM 
    [tblReports_16Braiding]
WHERE 
    ((([Product Part Number])=[Forms]![AdminProdForm].[PartNumber]) AND [Date (mm-dd-yy)] Between [Forms]![AdminProdForm].[StartDate] And [Forms]![AdminProdForm].[EndDate]);

UNION ALL

SELECT ...  <snip>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM