Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 无法格式化MS Access查询中的字段_Sql_Ms Access_Ms Access 2010 - Fatal编程技术网

Sql 无法格式化MS Access查询中的字段

Sql 无法格式化MS Access查询中的字段,sql,ms-access,ms-access-2010,Sql,Ms Access,Ms Access 2010,无法格式化我的查询dsumum、tbl_Client、Portfolio='&[Portfolio]&'中的一个字段作为PortfolioAuM 我试过: 通过转到“属性”设置查询中字段的格式 并在那里设置所需的格式。不需要花时间。陌生人 尽管如此,我仍然无法始终选择 属性中的格式设置。有时它会出现,有时它会消失 给我一个空白的下拉框,我不能从中选择任何内容。 通过在“格式”字段属性中写入“0.0”,手动设置格式。 使用FormatdSunum、tbl_客户端、公文包='&[Portfolio]

无法格式化我的查询dsumum、tbl_Client、Portfolio='&[Portfolio]&'中的一个字段作为PortfolioAuM

我试过:

通过转到“属性”设置查询中字段的格式 并在那里设置所需的格式。不需要花时间。陌生人 尽管如此,我仍然无法始终选择 属性中的格式设置。有时它会出现,有时它会消失 给我一个空白的下拉框,我不能从中选择任何内容。 通过在“格式”字段属性中写入“0.0”,手动设置格式。 使用FormatdSunum、tbl_客户端、公文包='&[Portfolio]&'将格式直接写入我的查询 作为PortfolioAM,.0' 设置字段的格式不在查询中,而只在生成查询的表单中。 将基础数据重新格式化为双精度 这些尝试都没有奏效。如何格式化此字段?为什么会发生这种情况

以下是我的SQL代码:

SELECT tbl_Client.CIF, tbl_Client.Portfolio, 
    tbl_Criteria_Comp.Buyer_Review_StatusID, 
    tbl_Criteria_Comp.Comp_Review_StatusID, 
    tbl_Criteria_Tax.Tax_review_StatusID, 
    tbl_Client.AuM, 
    DSum("AuM","tbl_Client","Portfolio='" & [Portfolio] & "'") AS PortfolioAuM, 
    tbl_Client.BuyersReviewStatus, 
    [AuM]/[PortfolioAuM] AS AuMPoT, 
    tbl_Client.EntryDateReview
FROM 
    (tbl_Client INNER JOIN tbl_Criteria_Comp ON tbl_Client.CIF = tbl_Criteria_Comp.CIF) 
    INNER JOIN tbl_Criteria_Tax ON tbl_Client.CIF = tbl_Criteria_Tax.CIF;

我建议将SQL表达式更改为以下内容,以避免使用DSum函数:

SELECT 
    tbl_Client.CIF, 
    tbl_Client.Portfolio, 
    tbl_Criteria_Comp.Buyer_Review_StatusID, 
    tbl_Criteria_Comp.Comp_Review_StatusID, 
    tbl_Criteria_Tax.Tax_review_StatusID, 
    tbl_Client.AuM, 
    t.PortfolioAuM,
    tbl_Client.BuyersReviewStatus, 
    [AuM]/[t.PortfolioAuM] AS AuMPoT, 
    tbl_Client.EntryDateReview
FROM 
    (
        (
            tbl_Client INNER JOIN
            (
                SELECT Portfolio, SUM(AuM) AS PortfolioAuM
                FROM tbl_Client
                GROUP BY Portfolio
            ) t
            ON tbl_Client.Portfolio = t.Portfolio
        )
        INNER JOIN tbl_Criteria_Comp ON tbl_Client.CIF = tbl_Criteria_Comp.CIF
    ) 
    INNER JOIN tbl_Criteria_Tax ON tbl_Client.CIF = tbl_Criteria_Tax.CIF;

这将保留AuM字段的数据类型,从而允许您使用标准格式选项。

SQL查询中正确的格式部分应为

SELECT 
    [...]
    Format(DSum("AuM","tbl_Client","Portfolio='" & [Portfolio] & "'"),'#,#0.0') AS PortfolioAuM
    [...]

我还认为修改SQL查询是最好的主意。

这很管用。谢谢你的解决方案。知道为什么另一个版本不起作用吗?或者你能向我解释一下为什么你的能起作用吗?@rohrl77我很少在查询中使用DSum,但我认为差异可能是因为在处理记录时会对你使用的DSum进行评估,而在我的示例中,子查询返回的数据类型是预先知道访问的。其他人可能会给出更好的解释。