【问题标题】:DataGridView does not show decimalsDataGridView 不显示小数
【发布时间】:2020-04-24 08:15:54
【问题描述】:

我希望有人可以帮助我,因为我无法在网上找到解决方案。

我正在处理一个表单,其中使用 tableadapter 自动填充 datagridview,其中包含来自 access 数据库的数据。在数据库中,我有一列包含小十进制数字的双精度数。除了不显示小数的这个之外,datagridview 已正确填充。例如“0,00400364688627264”仅显示“0”或“0.000000”,具体取决于我如何格式化列。即使是科学格式也只在 dgv 中显示“0.000000E+000”。我怀疑它与访问中的分隔符“,”有关,并在调用填充之前尝试设置区域位置:

 System.Globalization.CultureInfo.DefaultThreadCurrentCulture = New Globalization.CultureInfo("da-DK")

但这也不起作用。认为这将是一个相当简单的问题,但无法弄清楚为什么它不起作用。

【问题讨论】:

  • 这些值是存储为字符串还是双精度值?看来那些是字符串。先解决这个问题。
  • 它们在数据库中以双精度形式存储,以“,”作为分隔符。
  • 双精度没有分隔符。此符号是转换为数值字符串的结果。符号本身由当前/本地格式决定。不要将价值与展示相混淆。如果这些字段实际上是 double precision 类型,则使用 DGV 显示它们不会有任何问题:此控件使用当前线程区域性(Thread.CurrentThread.CurrentCultureThread.CurrentThread.CurrentUICulture)来确定千位和小数分隔符,当值被格式化用于展示
  • Access数据库中列的数据类型是什么?
  • access中的数据类型为double

标签: vb.net datagridview decimal cultureinfo


【解决方案1】:

好的,我找不到解决方案。我想这与 tableadapter 填充方法和本地设置有关。无论如何,我做了一个解决方法,而是从 adodb 记录集中填充了 datagridview。我可能会听到一些关于此解决方案的抱怨,但它确实有效 :-) 感谢 Jimi 和 Fabio 抽出宝贵时间。

 Dim StamRS As New ADODB.Recordset
        Dim dt As New DataTable
        Dim StamAD As New OleDb.OleDbDataAdapter


        Try

            Connection.connect()

            StamRS.Open(sqlstr, conn, 1, 3)

            If StamRS.RecordCount > 0 Then
                StamAD.Fill(dt, StamRS)
                Stamopl_DGV.DataSource = dt
            End If
        Catch ex As Exception
            MsgBox("Fejl i åbning af Stamopløsnings databasen.")
        Finally
            StamRS.Close()
            StamRS = Nothing
            Connection.closeconn()
        End Try

【讨论】:

    猜你喜欢
    • 2011-07-31
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    相关资源
    最近更新 更多