sqlite VB.net DataGridView将小数舍入为整数

mkh04yzy  于 2023-05-18  发布在  SQLite
关注(0)|答案(1)|浏览(189)

我从一个SQLite数据库中进行查询,并将值加载到www.example.com中的DataGridViewvb.net
下面是我用来加载的子例程。SQL查询返回“subtotal”和“price”的正确十进制值。但是,有时DataGridView会将这些列转换为整数!
这似乎是由第一条记录驱动的,因为如果第一条记录是小数或零,那么列中的其余值将正确显示。但如果第一条记录是一个非零整数,那么列中的所有值将被舍入到最接近的整数。
我试着将.ValueType = GetType(Double)添加到每一列中(在加载之前和之后都试过,但没有用)。
有什么想法吗?我怎样才能强制DataGridView始终将此列识别为小数?

Public Sub reload_SalesTicketItems(ByVal sql As String, ByVal DGV As Object)
    Try
        Strconnection.Open()
        Using strcon As SQLiteConnection = Strconnection()
            ds_SalesTicketItems = New DataSet

            Using cmd = New SQLiteCommand
                With cmd
                    .Connection = strcon
                    .CommandText = sql
                End With
                Using da As New SQLiteDataAdapter
                    da.SelectCommand = cmd
                    da.Fill(ds_SalesTicketItems, "Items")

                    With DGV
                        .Columns("subtotal").ValueType = GetType(Double)
                        .Columns("price").ValueType = GetType(Double)

                        .DataSource = ds_SalesTicketItems
                        .DataMember = "Items"
                    End With
                End Using
            End Using
        End Using
    Catch ex As Exception
        Debug.WriteLine("ERROR [34]: " & ex.Message)
    End Try
End Sub

如果第一个值为非零小数,则确定:

如果第一个值为零,则确定:

如果第一个值为非零整数(相同的数据,只是以不同的顺序查询),则错误:

dgsult0t

dgsult0t1#

我能够找到一个变通方法,调整我的查询,以包括格式化为字符串的十进制列的副本,例如:CASE WHEN subtotal IS NOT NULL THEN printf("%.2f", subtotal) ELSE "" END AS subtotal2
但这感觉就像创可贴我更希望能够在www.example.com中修复它vb.net而不是必须操作查询。

相关问题