数据表的圆形单元格值(VB.NET)

时间:2016-05-17 17:42:04

标签: vb.net datatable

我无法从我的数据表中舍入一些单元格。 我希望这轮小数点后两位,你可以想象。我将快速解释如何向DataTable收取数据:

我将此函数存储在类中:

Protected Friend Function cargarPref(ByVal id_Pref As String) As DataTable
    Dim cmd As String = "Select Material,Cubicaje,SubTotal,ITBM,Total from Preferencia WHERE Id_Preferencia=@id_Pref"
    Dim t As New DataTable
    Try
        con.Open()
        comando = New OleDbCommand(cmd, con)
        comando.Parameters.AddWithValue("@id_Pref", id_Pref)
        adapter = New OleDbDataAdapter(comando)
        adapter.Fill(t)
        comando.Dispose()
        adapter.Dispose()
        con.Close()
    Catch ex As Exception
        MsgBox("Error en la consulta: " + ex.Message, MsgBoxStyle.Critical)
    End Try
    Return t
End Function

好的,现在我在我的Windows窗体中调用它:

 Private Sub DataCliente_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataCliente.CellContentClick
    If (Not IsNothing(DataMate)) Then
        DataMate.DataSource = Nothing
        mt.Clear()
    End If
    Dim index As Integer = 0
    If (DataCliente.Columns(DataCliente.CurrentCell.ColumnIndex).Name.Equals("Empresa")) Then
        index = Me.DataCliente.CurrentRow.Index
        lblid.Text = DataCliente.Rows(index).Cells("Id_Cliente").Value
        lblempresa.Text = DataCliente.Rows(index).Cells("Empresa").Value
        lbldirecc.Text = DataCliente.Rows(index).Cells("Direccion").Value
        lblcorreo.Text = DataCliente.Rows(index).Cells("Correo").Value
        lbltel.Text = DataCliente.Rows(index).Cells("Telefono").Value
        lblpreyd.Text = Math.Round(CDbl(DataCliente.Rows(index).Cells("PrecioYD").Value), 2).ToString("N2")
    End If
    mt = data.cargarPref(DataCliente.Rows(index).Cells("Id_Preferencia").Value) <--HERE!!!
    DataMate.DataSource = mt
    PanelMaterial.Enabled = True
End Sub

现在,请注意我的数据库访问权限,以及程序的数据网格!

enter image description here enter image description here 由于一些奇怪的原因......我从数据库中获取的数据,程序将它们视为整数。

在datagridview中打印之前,如何在数据表中舍入那些值?

1 个答案:

答案 0 :(得分:0)

我终于找到了一个解决方案,如果你需要,我将向你展示如何解决这个问题(在你这样做之前,你必须定义你想要在datagridview上看到的所有列!):

首先,我创建一个具有公共属性的类:

Public Class Preferencia
Public Property Material() As String
Public Property Cubicaje() As String
Public Property SubTotal() As String
Public Property ITBM() As String
Public Property Total() As String

结束班

其次,我创建了2个函数和一个过程方法:

 Private Function setPreferencia(ByVal material As String, ByVal cubicaje As String, ByVal subtotal As String, ByVal itbm As String, ByVal total As String) As Preferencia
    Dim item As New Preferencia
    item.Material = material
    item.Cubicaje = FormatNumber(cubicaje, 2)
    item.SubTotal = FormatNumber(subtotal, 2)
    item.ITBM = FormatNumber(itbm, 2)
    item.Total = FormatNumber(total, 2)
    Return item
End Function

 Private Function registrarPreferencia() As List(Of Preferencia)
    Dim lista As New List(Of Preferencia)
    For Each itm In mt.Rows
        lista.Add(setPreferencia(itm(0), itm(1), itm(2), itm(3), itm(4)))
    Next
    Return lista

 Protected Friend Sub FillGrid()
    DataMate.AutoGenerateColumns = False
    DataMate.DataSource = registrarPreferencia()
    DataMate.Columns("Material").DataPropertyName = "Material"
    DataMate.Columns("Cubicaje").DataPropertyName = "Cubicaje"
    DataMate.Columns("SubTotal").DataPropertyName = "SubTotal"
    DataMate.Columns("ITBM").DataPropertyName = "ITBM"
    DataMate.Columns("Total").DataPropertyName = "Total"
End Sub

现在唯一要做的就是调用方法&#34; FillGrid()&#34;当您想要打印数据时。最后,我解决了!

enter image description here