【发布时间】:2021-11-04 12:57:35
【问题描述】:
我创建了一个新手 Access 程序并使用以下 SQL 来深入了解我的选择。设备编号范围为 000 - 5000。对于大于 099 的数字,一切正常,但我的搜索结果不会向下钻取到小于 100 的设备编号。如果我将 ((TBTask.EquipID) Like "*" &[Forms]![SEARCH]![SearchEquipment] & "*") 更改为 ((TBTask.EquipID)Like [Forms]![SEARCH]![SearchEquipment]),我可以向下钻取它但后来我失去了深入了解 WO 号码的能力。我知道问题是数字为 99 时的前导“0”,但我不知道如何解决它以实现这两个结果并使表格保持不变。
SELECT TBEquipment.[Equipment No], TBEquipment.[Equipment Name], TBTask.*
FROM TBEquipment INNER JOIN TBTask ON TBEquipment.[Equipment No] = TBTask.EquipID
WHERE (((TBTask.CLOSED) Like "*" & [Forms]![SEARCH]![SearchClosed] & "*" Or (TBTask.CLOSED) Is Null)
AND ((TBTask.EquipID) Like "*" & [Forms]![SEARCH]![SearchEquipment] & "*")
AND ((TBTask.ID) Like "*" & [Forms]![SEARCH]![SearchWO] & "*")
AND ((TBTask.Opened) Like "*" & [Forms]![SEARCH]![SearchOpened] & "*")
AND (((TBTask.Description) Like "*" & [Forms]![SEARCH]![SearchKeyword1] & "*" Or (TBTask.Description) Is Null)
And ((TBTask.Description) Like "*" & [Forms]![SEARCH]![SearchKeyword2] & "*" Or (TBTask.Description) Is Null)
And ((TBTask.Description) Like "*" & [Forms]![SEARCH]![SearchKeyword3] & "*" Or (TBTask.Description) Is Null)
And ((TBTask.Description) Like "*" & [Forms]![SEARCH]![SearchKeyword4] & "*" Or (TBTask.Description) Is Null))
AND (((TBTask.Solution) Like "*" & [Forms]![SEARCH]![SearchKeyword5] & "*" Or (TBTask.Solution) Is Null)
And ((TBTask.Solution) Like "*" & [Forms]![SEARCH]![SearchKeyword6] & "*" Or (TBTask.Solution) Is Null)
And ((TBTask.Solution) Like "*" & [Forms]![SEARCH]![SearchKeyword7] & "*" Or (TBTask.Solution) Is Null)
And ((TBTask.Solution) Like "*" & [Forms]![SEARCH]![SearchKeyword8] & "*" Or (TBTask.Solution) Is Null))
AND ((TBTask.PartsToOrder) Like "*" & [Forms]![SEARCH]![SearchParts] & "*" Or (TBTask.PartsToOrder) Is Null)
AND ((TBTask.PartsRequest) Like "*" & [Forms]![SEARCH]![SearchPartsRequested] & "*")
AND ((TBTask.PartsComplete) Like "*" & [Forms]![SEARCH]![SearchPartsOrdered] & "*")
AND ((TBTask.Review) Like "*" & [Forms]![SEARCH]![SearchReview] & "*")
AND ((TBTask.SafteyIssue) Like "*" & [Forms]![SEARCH]![SearchSafety] & "*")
AND ((TBTask.Mgr_Approved) Like "*" & [Forms]![SEARCH]![SearchMgrAP] & "*")
AND ((TBTask.Status) Like "*" & [Forms]![SEARCH]![SearchStatus] & "*"))
OR (((Nz([Forms]![Search]![SearchWO],""))="")
AND ((Nz([Forms]![Search]![SearchEquipment],""))="")
AND ((Nz([Forms]![Search]![SearchOpened],""))="")
AND ((Nz([Forms]![Search]![SearchClosed],""))="")
AND ((Nz([Forms]![Search]![SearchKeyword1],""))="")
AND ((Nz([Forms]![Search]![SearchKeyword2],""))="")
AND ((Nz([Forms]![Search]![SearchKeyword3],""))="")
AND ((Nz([Forms]![Search]![SearchKeyword4],""))="")
AND ((Nz([Forms]![Search]![SearchKeyword5],""))="")
AND ((Nz([Forms]![Search]![SearchKeyword6],""))="")
AND ((Nz([Forms]![Search]![SearchKeyword7],""))="")
AND ((Nz([Forms]![Search]![SearchKeyword8],""))="")
AND ((Nz([Forms]![Search]![SearchParts],""))="")
AND ((Nz([Forms]![Search]![SearchPartsRequested],""))="")
AND ((Nz([Forms]![Search]![SearchPartsOrdered],""))="")
AND ((Nz([Forms]![Search]![SearchReview],""))="")
AND ((Nz([Forms]![Search]![SearchSafety],""))="")
AND ((Nz([Forms]![Search]![SearchMgrAP],""))="")
AND ((Nz([Forms]![Search]![SearchStatus],""))=""))
ORDER BY TBTask.CLOSED DESC;
编辑:固定格式
【问题讨论】:
-
您使用的是哪个 dbms? (上面的 SQL 是特定于产品的。)
-
简化!向我们展示一些示例表数据和预期结果 - 全部为格式化文本(不是图像)。minimal reproducible example
-
Access 365,“MS Access 365 中的 SQL 语句”。所以我的问题是,当我尝试深入了解以 0 或 00 开头的 WO 时,我没有得到任何结果。如果我深入了解 WO 的 100 或更高,一切似乎都很好。看起来我有一个问题,包括我的声明中的前导零。处理示例
-
示例 A) 当我使用 "((TBTask.EquipID) Like [Forms]![SEARCH]![SearchEquipment])" 查询 000 时的结果 ID EquipID 描述 400 000 文本 0a 401 000 文本 0b 406 101 文本 101a - 示例 B) 当我使用 "((TBTask.EquipID) Like "" & [Forms]![SEARCH]![SearchEquipment] & "")" ID EquipID 描述查询 000 时的结果400 000 文本 0a 401 000 文本 0b - 参考 org SQL 语句和示例 BI 可以向下钻取,但是当我尝试搜索的第二部分时“((TBTask.ID)像“”和 [Forms] ![SEARCH]![SearchWO] & "")" 没有选择相关的设备不我什么都得不到
-
听起来真正的问题是将数字存储为字符串,并且在排序时他的行为很奇怪