【问题标题】:ConcatRelated() - query or tablesConcatRelated() - 查询或表
【发布时间】:2018-06-16 20:21:29
【问题描述】:

我有类似的问题Combine values from related rows into a single concatenated string value

我有两个查询:

这就是现在没有ConcatRelated()的样子:

我需要得到回报:

我尝试使用这个 SQL:

SELECT DISTINCT
Q_Fakt1.FakturaID,
Q_Fakt1.DatumVystavenia,
Q_Fakt1.DatumSplatnosti,
Q_Fakt2.Pismeno,

ConcatRelated(
"pismeno",
"Q_Fakt2",
"FakturaID = '" &  [Q_Fakt1]![FakturaID] & "'"
) AS Letters

FROM Q_Fakt1 INNER JOIN Q_Fakt2 ON Q_Fakt1.FakturaID = Q_Fakt2.FakturaID;

结果是 7 次弹出:

ConcatRelated() Error3464:标准表达式中的数据类型不匹配。

我对表格做了同样的事情,但我的关系有点复杂,所以......

https://i.stack.imgur.com/TM7Cu.png

SQL:

SELECT DISTINCT
Faktury.FakturaID,
Kategorie.Oznacenie,
Faktury.DatumVystavenia,
FakturujemVam.FakturujemVamID,
FakturyDetaily.FakturujemVam,
[DatumVystavenia]+[splatnostFaktury] AS DatumSplatnosti,

ConcatRelated("Oznacenie","kategorie","FakturaID = '" & [FakturaID] & "'") AS Letters

FROM Kategorie INNER JOIN (Faktury INNER JOIN (FakturujemVam INNER JOIN FakturyDetaily ON FakturujemVam.FakturujemVamID = FakturyDetaily.FakturujemVam) ON Faktury.FakturaID = FakturyDetaily.Faktura) ON Kategorie.KategoriaID = FakturujemVam.Kategoria;

结果是 6 次弹出:

ConcatRelated() 错误 3061:参数太少。 1除外。

我哪里做错了?感谢您的帮助

【问题讨论】:

    标签: sql ms-access merge concatenation


    【解决方案1】:

    那是因为你在不使用字符串时使用了字符串分隔符。

    删除那些分隔符,它会正常工作:

    ConcatRelated("Oznacenie","kategorie","FakturaID = " & [FakturaID] ) AS Letters
    

    【讨论】:

    • 感谢您的回答。使用 2 个查询 - 删除分隔符不起作用,但使用表几乎可以正常工作。但它显示例如 2、9、9。因为在表 KATEGORIE 中,键 1 下的“a”是“a”,而“z”在 9 下。有机会将其更改为显示第二列吗?为了更好地理解:[链接]i.imgur.com/J59Qphz.png
    • 对不起,我不明白你想说什么。如果您按带有字母的列进行过滤,则确实需要分隔符。
    • 对不起,我犯了错误:有两个查询 Q_fakt1 和 Q_fakt2 - 它有效(没有那些撇号)这就是我的意思:[链接]i.imgur.com/DnblSts.jpg - 你有没有机会通过 Skype 或 TeamViewer 帮助我? ..我是初学者,所以我知道,我做的简单的事情比实际情况更复杂。但我有点迷失在这一点上。
    • 很抱歉,除了帮助 Stack Overflow 之外,我不提供任何个人帮助。有了这些当前的屏幕截图,我也很茫然,看起来它应该可以工作。我不知道函数从哪里得到这些数字,以及为什么它不返回字母。
    • 好的。我在前一个数据库的基础上又创建了一个数据库,但标题比原来的更简单。请你看一下好吗?你会尝试为我找到解决方案吗?我完全迷路了。我试图将 Key 从 num 更改为 Short Text,但它仍然不起作用。如果您不能/或您不知道,您是否认识可能知道如何解决此问题的人?谢谢。
    【解决方案2】:

    已解决:


    第 1 步

    创建查询以将多个表合并为一个

    Datasheet View

    Design View

    第 2 步

    创建另一个查询并使用 ConcatRelated()

    Design View

    SQL:

    SELECT
    Q_Part_Bill_Num2.NumBill,
    Q_Part_Bill_Num2.C_Mark,
    
    ConcatRelated(
         "C_Mark",
         "Q_Part_Bill_Num2",
         "Q_Part_Bill_Num2!NumBill = " & [Q_Part_Bill_Num2]![NumBill]
         ) AS PartBillNum2
    
    FROM Q_Part_Bill_Num1 INNER JOIN Q_Part_Bill_Num2 ON Q_Part_Bill_Num1.NumBill = Q_Part_Bill_Num2.NumBill;
    

    第 3 步 - 可选

    编辑 MODULE 以删除/更改分隔符“,”

    第 4 步

    创建最后一个查询以将所有内容连接在一起。 Design View

    SQL:

      SELECT DISTINCT
    
    Q_Part_Bill_Num1.PartBillNum1,
    Q_Part_Bill_Num3.PartBillNum2,
    [PartBillNum1] & [PartBillNum2] AS [Full]
    
    FROM 
    (T_Bills INNER JOIN Q_Part_Bill_Num1 ON T_Bills.Bills_ID = Q_Part_Bill_Num1.Bills_ID)
    INNER JOIN (Q_Part_Bill_Num2 INNER JOIN Q_Part_Bill_Num3
    ON (Q_Part_Bill_Num2.NumBill = Q_Part_Bill_Num3.NumBill)
    AND (Q_Part_Bill_Num2.C_Mark = Q_Part_Bill_Num3.C_Mark))
    ON Q_Part_Bill_Num1.NumBill = Q_Part_Bill_Num2.NumBill;
    

    使用 DISTINCT 避免重复。 我希望这会对某人有所帮助。

    感谢大家的宝贵时间:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      • 2014-03-06
      • 1970-01-01
      相关资源
      最近更新 更多