读书人

怎么区分sql server中的numeric 和mon

发布时间: 2012-01-07 21:41:55 作者: rapoo

如何区分sql server中的numeric 和money
vb.net2008,sql server2005,winForm


目前使用[DbDataAdapter1.Fill(DataSet1)]的方法把用sql文检索到的数据保存在dataset中,(然后在绑定到datagridview上)
因为现在需要判断:如果是money型,那么前面加上货币符号;如果是numeric型的,那么每3位用逗号隔开。
现在调查发现,sql server中的numeric型和money型读入到dataset中后都指定为"Decimal"类型,区分不开。
请问如何区分numeric型和money型的数据?

#注:因为sql文是从别的文件中读取的,不是固定的,所以不能根据列名称来指定哪一列需要加货币符号。

[解决办法]
去读取数据库元数据来获取类型。
-- 只是个建议,我也没弄过。
[解决办法]
可以利用系统视图提供的信息在数据加载前获取字段类型

SQL code
SELECT DATA_TYPE  FROM [INFORMATION_SCHEMA].[COLUMNS]WHERE TABLE_CATALOG = N'LzmtwWorks'       AND TABLE_SCHEMA = N'Society'      AND TABLE_NAME = N'经济成分'      AND COLUMN_NAME = N'Value'
[解决办法]
还真没搞过,真的不行的话,还是只用其中一种类型为好
[解决办法]
貌似很不好整~~~~

顶之~~
[解决办法]
不是固定的你也要知道你哪列想用什么格式显示吧?
如果这个都不知道.你测试怎么测试??
[解决办法]
Private Sub songsDataGridView_CellFormatting(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) _
Handles songsDataGridView.CellFormatting

If Me.songsDataGridView.Columns(e.ColumnIndex).Name = "Track" Then

If Not e Is Nothing Then
If Not e.Value Is Nothing Then
Try
e.Value = "$" & SqlMoney.Parse(e.Value.ToString()).ToString

e.FormattingApplied = True
Catch ex As FormatException
Console.WriteLine("{0} is not a money.", e.Value.ToString())
End Try
End If
End If

End If
End Sub
当 CellFormatting 事件被引发时,Track 列中的每个单元格都格式化为一个money,除非单元格的值无法分析.
msdn学习到,不知能不能帮你。
[解决办法]
用程序循环取每个列的数据类型,动态设置DataGridView每列的数据类型.
[解决办法]
同样是999,
numeric型输入一般会是:999

money型输出时一般会是:999.00

当然,这同你的区域设置有关系,但也是一种判断的方法哦。
[解决办法]
UP

读书人网 >VB Dotnet

热点推荐