Access 不保存列的数据类型
Posted
技术标签:
【中文标题】Access 不保存列的数据类型【英文标题】:Access doesn't hold datatype for column 【发布时间】:2013-01-03 19:57:01 【问题描述】:我在 MS Access 应用程序中有一个本地表和一个查询。查询用值填充表,并且表有一个返回类型值应该是双精度的列,我将字段大小设置为双精度,但是在运行应用程序时,它会自动将该列的字段大小更改为小数,最多 2 个小数地方。我不希望该列具有舍入值。
例如:值 12.44556 输出为 12.44。
如何强制 Access 使用 Double 作为字段大小?此刻访问,覆盖我设置的字段大小。
有什么想法,我有点迷路了?
我有一个非常直接的 SQL。
SELECT A,B,C,D
INTO TABLE_TEST
FROM TESTABC
其中 TABLE_TEST 是本地表,TESTABC 是 SQL 数据库表。
此外,在此之后,我正在更新列,使用如下所示的某些乘法。
Update TABLE_TEST
SET B= A/C*D
A、B、C 和 D 都应该将字段大小设置为双精度,即使我将其设置为双精度,在运行时,Access 也会将其更改回十进制。 :\
【问题讨论】:
您确定要查看的是存储格式,而不是 display 格式吗? 我正在设置字段大小,方法是转到表格设计视图并设置字段属性。所以我相信它是存储格式。 检查该字段的Format
属性。确保它是空白的。
是的,它是空白的。困扰我的事情是,如果我将“双倍”设置为字段大小,为什么要访问将其更改为具有第 2 轮值的小数。
我想您正在某处进行生成表查询?
【参考方案1】:
属性应该是这样的:
导致:
要从查询中创建它,您可以使用以下内容:
SELECT Table1.AText, CDbl([ANumeric]/2) AS Expr1 INTO b
FROM Table1;
CDbl
将确保您获得双倍回报。
【讨论】:
是的,问题是即使将字段设置为 Double,在运行查询时,我也会将结果设置为小数,并且表格会覆盖我的设置并将字段大小设置回十进制,在自己的。 请将查询的 sql 添加到您的问题中。 谢谢,你的小费很神奇。 Cdbl 根据需要强制双输出。 :)【参考方案2】:SELECT INTO 创建一个新表。如果您想将记录添加到现有表(具有预定义的数据类型),您应该使用 APPEND 查询。
【讨论】:
不,我打算在每次运行应用程序时创建一个新表。 那么您必须接受 Access 选择的数据类型。不要这样做,而是按照您想要的方式创建表,运行 DELETE 查询以清除旧记录,并运行 APPEND 查询以插入新记录。 我明白了,难道没有预先定义数据类型的方法吗?实际上我正在更新一个现有的应用程序,它用来产生“双”数据类型输出。我刚刚通过添加一些连接来更新查询,从那时起,访问在任何地方都产生“十进制”数据类型,而之前它产生了“双”值。 在 Access 中预定义数据类型的方式是手动创建表,指定数据类型,然后保留原始表结构。 AFAIK 无法在 MAKE TABLE/SELECT INTO 查询中指定数据类型;都是自动感应的。 感谢您提供见解,这些信息真的很有帮助。以上是关于Access 不保存列的数据类型的主要内容,如果未能解决你的问题,请参考以下文章
我想知道 c# 中 ms access 数据库表列的确切数据类型(dbtype)
使用 MS Access 的 C# 标准表达式中的数据类型不匹配?
Java 中获得Access 数据库中的表名和表中的列名 及每个列的数据类型
在 MS Access 中保存来自 VB.Net Windows 窗体的数据时出现错误 System.Data.OleDb.OleDbException:“标准表达式中的数据类型不匹配”。