我从一个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
如果第一个值为非零小数,则确定:
如果第一个值为零,则确定:
如果第一个值为非零整数(相同的数据,只是以不同的顺序查询),则错误:
1条答案
按热度按时间dgsult0t1#
我能够找到一个变通方法,调整我的查询,以包括格式化为字符串的十进制列的副本,例如:
CASE WHEN subtotal IS NOT NULL THEN printf("%.2f", subtotal) ELSE "" END AS subtotal2
但这感觉就像创可贴我更希望能够在www.example.com中修复它vb.net而不是必须操作查询。