ASSL 的 DataType 元素:能用的类型其实只有这 13 个
一、DataType 元素管什么
DataType 元素定义关联元素的数据类型。它可以出现在两个父元素下:DataItem 和 Measure(度量值)。
它的数据类型是字符串(枚举),默认值为 None(无默认值),出现次数 0-1,即可出现一次且仅一次。它没有子元素。
关键前提:DataType 的取值定义在 System.Data.OleDb.OleDbType 枚举里,但只有下表列出的枚举值在 DataType 元素中有效。也就是说,枚举里有不等于这里能用。
二、13 个有效取值与对应关系
| DataType 值 | 含义 | .NET 对应 | OLE DB 对应 |
|---|---|---|---|
| BigInt | 64 位有符号整数 | Int64 | DBTYPE_I8 |
| Bool | 布尔值 | Boolean | DBTYPE_BOOL |
| Currency | 货币值,精度到货币单位的万分之一 | Decimal | DBTYPE_CY |
| Date | 日期数据,以双精度浮点数存储 | DateTime | DBTYPE_DATE |
| Double | 双精度浮点数 | Double | DBTYPE_R8 |
| Integer | 32 位有符号整数 | Int32 | DBTYPE_I4 |
| Single | 单精度浮点数 | Single | DBTYPE_R4 |
| SmallInt | 16 位有符号整数 | Int16 | DBTYPE_I2 |
| TinyInt | 8 位有符号整数 | SByte | DBTYPE_I1 |
| UnsignedBigInt | 64 位无符号整数 | UInt64 | DBTYPE_UI8 |
| UnsignedInt | 32 位无符号整数 | UInt32 | DBTYPE_UI4 |
| UnsignedSmallInt | 16 位无符号整数 | UInt16 | DBTYPE_UI2 |
| WChar | 以 null 结尾的 Unicode 字符流 | String | DBTYPE_WSTR |
还有一个特殊取值 Inherited:表示继承 Measure 的 Source 元素中所包含 DataItem 的数据类型。该取值仅适用于 Measure 元素。
三、三个最容易选错的类型
其一,Date 不是「日期」,是「天数」。它以双精度浮点数存储,整数部分是从 1899 年 12 月 30 日起的天数,小数部分是一天的比例。这解释了为什么它在 .NET 里映射到 DateTime,在 OLE DB 里映射到 DBTYPE_DATE——它本质是数字而非字符串。
其二,Currency 不是浮点数。取值范围从 -2^63 到 2^63-1(即 -922,337,203,685,477.5808 到 +922,337,203,685,477.5807),精度到货币单位的万分之一。它在 .NET 里映射到 Decimal 而非 Double,在 OLE DB 里对应专有的 DBTYPE_CY。做金额汇总的度量选错类型,尾数会飘。
其三,WChar 是「以 null 结尾」的流。它不是普通字符串,而是带 null 终止符的 Unicode 字符流,映射到 .NET 的 String、OLE DB 的 DBTYPE_WSTR。做维度键或长文本时要清楚这个语义。
四、选型时怎么想
- 计数和序号:用 Integer 或 BigInt,需要允许负数时不要用 Unsigned 系列。
- 金额:用 Currency 或 Double。追求精确汇总用 Currency,要参与科学计算用 Double。
- 布尔标记:用 Bool。
- 日期时间:用 Date,注意它底层是数字,跨系统对接时留意编码。
- 文本:用 WChar。
- 继承上游类型:Measure 里可以用 Inherited 避免重复声明,但要清楚它依赖 Source 里 DataItem 的定义是否一致。
注意:DataItem 里的 DataType 与 Measure 里的 DataType 语义不完全一样。Inherited 只在 Measure 下可用,DataItem 下并没有这个选项。
猜你喜欢
YOU LIKE- 被“除外承保”还要买保险吗?搞懂核保分类
- 银行对账单 PDF 转成 Excel:跨页表格和长编号会被搞坏的地方
- 木地板配地毯:颜色、材质、尺寸三个坑别踩
- 教师简历怎么写:资格证+任教学段与成果
- 剖腹产后第一次下床:时间点、三步动作、防眩晕细节
- 个人/小微外贸怎么结汇最划算?渠道对比与5万美元额度
- GPT-6 上线了:这次变的不只是回答,是"回答的形式"
- 联通宽带怎么测速才准?先插网线、再选对联通节点
- 品类运营简历怎么写?工作经历要"动词+数据"才出成果
- 淘宝极有家装修为什么便宜?价格逻辑与避坑
- 把 40 笔流水和 38 份回单交给 AI 对账,结果揪出 6 项差异
- 论文查重怎么操作:流程、系统与报告解读
- 预算 12 万结到 18 万:一份装修合同里真正该写死的四条
- 小户型扩容与储物:两室变四室、65平储物柜的改造思路
- 茶餐厅菜单62个品砍到32个:先修菜品结构,再谈客单价
- "AI 安全产品"到底是什么?三类形态一览
- 2026 年 AI 在涨谁的工资、在压谁的工资:猎头的一线数据
- 澳洲留学开户见证:16 岁就能办,但优惠细则要逐条看清
