我目前正在处理一个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
(来自新表),否则“”
如果部件号字段匹配,这将返回特定部件号的描述,否则将该字段留空,因为它可能不包含部件号。
我很欣赏这方面的任何建议。在尝试解决这个问题时,我可能会想到这一点,所以欢迎新的输入。
答案 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)
以下是我们过去使用的示例数据库中的图片。它包含我们可能需要的所有信息,然后是与我们的供应商匹配的部分。使用的查询将显示我们的零件与供应商零件匹配的每一行
您也可以将[AskMeForMyPart]或其他任何内容放在方括号中,以便根据该特定部分进行查询。