MS Access字符串在查询

时间:2017-02-06 18:09:33

标签: ms-access

我的Access数据库中有两个外部链接的表。表格tblBatches包含POLineItem的两个单独字段,例如

Batch       PO         LI
1234567  4101234567     1
1234568  4101234567     4
1234569  4107654321    13
...

我有另一个表格tblWIP,其中包含字段PO-LineItem,例如:

PO-LI              Date
4101234567-01     1/1/2016
4101234567-04     7/7/2016
4107654321-13     12/30/2016
...

所有字段都存储为ShortText

由于这些表已链接到外部Excel文件,因此我创建了一个查询qryBatchByPO-LI,以使用以下表达式处理来自PO的{​​{1}}和LI字段:

tblBatches

我想运行一个查询,它将批处理和日期从我的中间查询中的PO LI链接出来,但它似乎没有正常工作。

即,在订单项小于10时,它似乎没有链接(因此第一个表中只有一个数字)。

因此,基于上述示例的查询只会返回:

PO LI: [Purchasing Document]+"-"+Format([Purch# Doc: Item No#],"00")  

我尝试过以下几种方式修改我的表达方式,包括:

Batch        PO-LI        Date
1234569  4107654321-13  12/30/2016

我甚至尝试通过拆分和重新加入字符串来处理第二个表中的PO LI: [Purchasing Document]+"-"+IIF(len([Purch# Doc: Item No#])<2,"0"+[Purch# Doc: Item No#],[Purch# Doc: Item No#]) 字段,以尝试确保所有内容都存储为字符串,但没有运气。在所有情况下,我的中间查询的结果看起来都是正确的,但任何订单项&lt; 10都没有出现在我的最终查询中。

我不知道为什么这些项目没有出现,在我看来,PO-LI中的PO LI表达最终看起来与qryBatchByPO-LI字段中的PO-LI字段相匹配{1}}。任何帮助将不胜感激:/

我使用设计视图构建了查询,但SQL代码最终结束:

tblWIP

1 个答案:

答案 0 :(得分:1)

使用此SQL构建查询;

SELECT tblBatches.BatchID, tblBatches.PO, tblBatches.LI, [PO] & '-' & IIf(Len([LI])<2,'0' & [LI],[LI]) AS PO-LI FROM tblBatches;

然后将此查询保存为qdfOne。然后构建另一个查询并链接到表tblWIP,如下所示;

INNER JOIN qdfOne ON tblWIP.PO-LI = qdfOne.PO-LI

当我这样做时,我会将所有订单项返回1,4&amp; 13。

不同之处在于使用&#39;&amp;&#39;连接字符串。使用&#39; +&#39;最终可以将字符串视为数字,以便&#39; 01&#39; (字符串)成为&#39; 1&#39; (数字)。