【问题标题】:MS Access alter multiple columnsMS Access 更改多个列
【发布时间】:2013-03-07 19:19:04
【问题描述】:

我有一个来自 JDE/AS400 的 ODBC 链接表,我将其引入 MS Access 2010。该表有四个数据类型为十进制的字段,一旦我将它们写入临时表。有没有办法在一个查询中包含四个更改表/列语句?

如果有人想知道,存储在这些字段中的数据是价格和成本,但它们以 15 的十进制值和 0 个尾随小数的形式存储在 ODBC 表中,我必须将 2 除以 10,000 和 1 除以 100,000获取正确位置的小数点来表示真实的价格/成本例如,价格字段中的 3558767 实际上是 355.8767 或 355.88 四舍五入的价格)。当我将相同的数据带入 Access 并除以 10000 时,我得到 355.00。我需要正确的美分值。过去我能够做到这一点的唯一方法是编写一个更改表/更改列查询以在执行除法之前将数据类型更改为双精度。

由于我有四个这样的字段,我想同时更改或修改所有四个。有什么想法吗?

感谢任何帮助。

【问题讨论】:

  • 您的问题非常令人困惑。 Access中有哪些数据类型?你到底想做什么?此外,如果您要存储价格,您可能不想使用 Double,因为它是一个浮点数。
  • 对不起,鲍比,我知道这很混乱。似乎总是可以使用 JD Edwards 文件。 Access 中的数据类型与存储在链接表中的数据类型完全相同,这是一种十进制数据类型,长度为 15 个数字。您对此建议使用什么数据类型?我已经尝试过货币,但是由于我首先必须将这些金额分开,因为 AS400/JDE 链接表将它们存储为小数,而其中不包含小数点,所以我不能简单地将它们转换为货币,而无需先将它们分开得到它所属的小数点。
  • 我继续写了四个更改表查询,但是如果有人能告诉我在 VBA 之外编写一个简单查询的方法,该查询将在一个单一的表中更改多个列在 MS Access 中查询,我将不胜感激。谢谢。蒂姆

标签: ms-access alter-table


【解决方案1】:

在 Access(或符合 ANSI 的 SQL,据我所知)中没有办法同时更改多个列;您必须:

  • 运行四个单独的更改脚本,或者...
  • 新建临时表,将所有数据移入临时表,删除主表,然后重命名临时表

在这种情况下,这确实是一种清洗,因为无论哪种方式,您都将运行四个脚本。

【讨论】:

  • 谢谢鲍比。这是我在其他地方搜索时发现的,但我认为发帖看看我是否遗漏了什么不会有什么坏处。
【解决方案2】:

如前所述,Access SQL 不允许您使用单个 SQL 语句更改多个列。但是,您的问题中的背景信息有些令人困惑。

SELECT decimal_field/10^4 AS my_quotient
FROM tblFoo;

decimal_field 是 Decimal 类型,精度 = 15,小数位数 = 0。

当我将3558767 存储到decimal_field 并运行该查询时,Access 2007 将355.8767 作为my_quotient 提供给我。这就是我理解你想要但没有得到的结果。

如果你能解决这个问题,也许你不需要更改任何列。

【讨论】:

  • 谢谢汉斯。我确实尝试在第一个查询中对 decimal_field 进行除法,该查询从链接表中提取数据并不断将其四舍五入。不知道为什么会这样。我再试一次,看看我能不能弄清楚发生了什么。
  • 好的,听起来你已经按照我的想法走。我不明白为什么它会丢弃小数位 --- 也许这是特定 ODBC 驱动程序的异常。
猜你喜欢
  • 2016-11-04
  • 2018-06-03
  • 2021-12-02
  • 2018-05-17
  • 1970-01-01
  • 2020-05-19
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多