gpt4 book ai didi

sql - SQL Server 查询中的 Access 中的问题格式化数字

转载 作者:行者123 更新时间:2023-12-02 00:02:10 26 4
gpt4 key购买 nike

我有一个生产数据库,它使用 SQL Server 后端,表链接到 Access 前端。出于性能原因,我试图将大部分报告查询编写为 SQL View ,并简单地从 Access 中传递参数。

但我遇到的问题是,似乎不允许我格式化在 SQL View 中计算的字段。

比如我有一张表:

CaseLot    Drums    GrossWeight    %H2O
01 10 10,301 5.21

Drums、GrossWeight 和 Drums 都是十进制数据类型,但每个都有不同的比例。

在我看来,我包括了上表中的值,还有以下计算字段:

[GrossWeight] - 19.6*[Drums] AS NetWeight
([GrossWeight] -19.6*[Drums])*(100-[%H2O])/100 AS DryWeight

当我将这些计算字段拉到 Access 时,我对 NetWeight 字段的格式没有问题,但它不允许我对 DryWeight 字段进行格式化。这真的很令人沮丧,因为我想将 DryWeight 字段显示到小数点后两位,但它不会这样做。

我也曾尝试在 Access 中应用 Round() 函数,但当我包含要舍入到的比例时,它似乎给我一个“循环引用”错误。 Round(DryWeight) 可以将其四舍五入到小数点后 0 位,但 Round(DryWeight,2) 给我一个错误。

这里发生了什么?

最佳答案

Its almost as if Access is recognizing these calculated numbers as strings.

是的。我使用 SQL Server 2005 和 Access 2010 重现了这个问题。我在 SQL Server 中有一个名为 [CaseLotView] 的 View ...

CREATE VIEW [dbo].[CaseLotView]
AS
SELECT
CaseLot,
Drums,
GrossWeight,
[%H2O],
GrossWeight - 19.6 * Drums AS NetWeight,
(GrossWeight - 19.6 * Drums) * (100 - [%H2O]) / 100 AS DryWeight
FROM
dbo.CaseLotData

...当我在 Access 中创建链接表并打开它时,我看到以下内容:

AccessView.png

请注意 [NetWeight] 值是右对齐的(解释为数字),而 [DryWeight] 值是左对齐的(解释为字符串)。

一种解决方法是创建一个基于链接表的 Access 查询,使用 CDbl() 函数将 [DryWeight] 转换为数字:

SELECT 
dbo_CaseLotView.CaseLot,
dbo_CaseLotView.NetWeight,
CDbl([DryWeight]) AS dblDryWeight
FROM dbo_CaseLotView;

基于该查询的报告会将 [dblDryWeight] 识别为数字并提供预期的格式选项。

(请注意,虽然 VBA 中有一个 CDec() 函数,但它在 Access 查询中不起作用 - 引用:here。)

关于sql - SQL Server 查询中的 Access 中的问题格式化数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20719143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com