在IIF语句中的Access Query中使用其他表作为查找值?

时间:2013-06-30 12:47:16

标签: ms-access

我目前正在处理一个Access(2010)查询,该查询包含多个订单商品和GROUPING BY订单号。例如,customer可能已在5下订购了order number 123项,但我的查询将所有这些单独的项目分组到一行,其中每个项目都在其自己的列中。目标是每个单独的订单号包含在一行中,因为查询将以.csv格式导出到第三方软件。

因为当我根据255个字符截断描述字段时,我正在组合多个记录/项目。自从在查询中工作后,我看不到将文本字段更改为备注字段的选项,因此无法解决问题,而GROUP BY子句会限制255处的所有文本字段无论如何都要追。

所以,我的问题是不是使用当前查询中的描述字段,而是根据订购的部件号使用附加表来查找项目描述?建议的新表格非常简单:

PART | DESC

123     Widget Z_Langs_AUS_INT<br>
567     Widget K_Langs_DOM_CAN<br>
890     Widget B_Langs_SM 

因此,查询中的理想陈述类似于IIF TABLE1.PART#ORDERED(from current query) = NEWTABLE.PART(from new table),然后获取NEWTABLE.DESC(来自新表),否则“”

如果部件号字段匹配,这将返回特定部件号的描述,否则将该字段留空,因为它可能不包含部件号。

我很欣赏这方面的任何建议。在尝试解决这个问题时,我可能会想到这一点,所以欢迎新的输入。

2 个答案:

答案 0 :(得分:0)

不要将其写为查询。它太复杂了,并且使用VBA和直接文本访问非常简单。添加对 Microsoft Scripting Runtime (scrun.dll)的引用,对SQL数据使用内部查询对象,并使用类似于以下内容的代码。

Sub makeText()
    Dim rs1 As Recordset, rs2 As Recordset
    Dim oFSO As Scripting.FileSystemObject, oFile As Scripting.TextStream
    Dim txtLine As String

    Set oFSO = New Scripting.FileSystemObject

    oFile = oFSO.CreateTextFile("FileName.csv")

    Set rs1 = CurrentDb.OpenRecordset("baseQuery")

    Do Until rs1.EOF
        txtLine = rs1!OrderNumber.Value

        Set rs2 = CurrentDb.OpenRecordset("innerQuery")

        Do Until rs2.EOF
            txtLine = txtLine & "," & rs2!itemDesc.Value
            rs2.MoveNext
        Loop

        oFile.WriteLine txtLine

        rs1.MoveNext
    Loop

    oFile.Close

End Sub

答案 1 :(得分:0)

以下是我们过去使用的示例数据库中的图片。它包含我们可能需要的所有信息,然后是与我们的供应商匹配的部分。使用的查询将显示我们的零件与供应商零件匹配的每一行 enter image description here

您也可以将[AskMeForMyPart]或其他任何内容放在方括号中,以便根据该特定部分进行查询。 enter image description here enter image description here