Donate. I desperately need donations to survive due to my health

Get paid by answering surveys Click here

Click here to donate

Remote/Work from Home jobs

How to convert varchar to decimal in query and turn it back into varchar in datagridview

Can anyone improve this coding? Any help is greatly appreciated.

I want to add the varchar data (1/7 or 1/9) to the datagridview and convert it to a decimal number and save it to the query. Then, I want to display the value of the decimal query to the varchar number in the DataGridview.

Imports MySql.Data.MySqlClient
Public Class KuisionerAHP


    Private Sub Kuisioner_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        loading()
    End Sub
    Dim jlhKriteria As Integer
    Dim strKriteria() As String
    Dim adaKriteria As Boolean = False
    Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
        MainRoad.Show()
        Me.Close()
    End Sub

    Sub loading()
        Connect()
        Dim lstResponden() As String = GetList("tb_responden", "nama", "nomor")
        Dim lstKriteria() As String = GetList("tb_kriteria", "Kriteria", "nomor")
        cmbresponden.Items.Clear()
        For i = 0 To lstResponden.Length - 1
            cmbresponden.Items.Add(lstResponden(i))
        Next
    End Sub

    Sub BuatMatriks(ByVal Kriteria As String)
        Dim rs As MySqlDataReader
        Dim cmd As MySqlCommand

        Dim lstKriteria As New List(Of String)

        cmd = New MySqlCommand("select `Kriteria` from `tb_kriteria`  order by `nomor` asc", Connector)
        rs = cmd.ExecuteReader
        adaKriteria = rs.HasRows
        If adaKriteria Then

            'buat matriks perbandingan berpasangan survey kuisioner dg1
            dg1.Columns.Clear()

            While rs.Read
                lstKriteria.Add(rs("Kriteria"))
                dg1.Columns.Add(rs("Kriteria"), rs("Kriteria"))

            End While
            strKriteria = lstKriteria.ToArray
            jlhKriteria = lstKriteria.Count
            rs.Close()
            dg1.Rows.Add(jlhKriteria + 1)

            For i = 0 To jlhKriteria - 1
                Dim hd As New DataGridViewRowHeaderCell
                dg1.Rows(i).HeaderCell.Value = dg1.Columns(i).HeaderText

            Next
            dg1.Rows(jlhKriteria).HeaderCell.Value = "Jumlah"

            isiMatriksPerbandinganBerpsangan(Kriteria)

        Else
            rs.Close()
            MsgBox("Data Kriteria Tidak ada, Isi dahulu!")
        End If

        For Each col As DataGridViewColumn In dg1.Columns
            col.SortMode = DataGridViewColumnSortMode.Programmatic
        Next

    End Sub

    Sub isiMatriksPerbandinganBerpsangan(ByVal nama As String)
        If adaKriteria Then
            Dim cmd As MySqlCommand
            Dim rs As MySqlDataReader

            cmd = New MySqlCommand("select * from `tb_kuisionerahp` where `nama`='" & cmbresponden.Text & "'", Connector)
            rs = cmd.ExecuteReader
            If rs.HasRows Then
                While rs.Read

                    dg1.Item(rs("colIndex"), rs("rowIndex")).Value = rs("nilai")

                End While

                rs.Close()
                HitungMatrikResponden()


            Else
                rs.Close()
                For i = 0 To jlhKriteria - 1
                    dg1.Item(i, i).Value = 1
                Next
            End If
        End If
    End Sub


    Sub HitungMatrikResponden()
        If adaKriteria Then
            For i = 0 To jlhKriteria - 1
                For j = 0 To jlhKriteria - 1
                    If i > j Then
                        dg1.Item(j, i).Value = ((dg1.Item(j, j).Value) / (dg1.Item(i, j).Value))
                    End If
                Next
            Next
        End If
    End Sub




    Private Sub btnProses_Click(sender As Object, e As EventArgs) Handles btnProses.Click
        HitungMatrikResponden()

    End Sub
    Private Sub cmbresponden_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbresponden.SelectedIndexChanged
        BuatMatriks(cmbresponden.Text)
    End Sub


    Private Sub dg1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dg1.CellContentClick

    End Sub

    Private Sub BtnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSimpan.Click
        Dim cmd As MySqlCommand
        cmd = New MySqlCommand("delete from `tb_kuisionerahp` where `nama`='" & cmbresponden.Text & "'", Connector)
        cmd.ExecuteNonQuery()
        For i = 0 To jlhKriteria - 1
            For j = 0 To jlhKriteria - 1



                    cmd = New MySqlCommand("insert into `tb_kuisionerahp` values('" & cmbresponden.Text & "','" & j & "','" & i & "','" & dg1.Item(j, i).Value & "')", Connector)
                    cmd.ExecuteNonQuery()



            Next
        Next

        MsgBox("Data Tersimpan")
    End Sub


    Private Sub BtnHps_Click(sender As Object, e As EventArgs) Handles BtnHps.Click
        If cmbresponden.Text <> "" Then
            Dim cmd As New MySqlCommand(AutoDeleteQuery("tb_Kuisionerahp", "Nama", cmbresponden.Text), Connector)
            Try
                cmd.ExecuteNonQuery()
                loading()

                MsgBox("Data Terhapus")
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
            cmd = Nothing
        End If
    End Sub


    Private Sub dg1_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles dg1.CellBeginEdit
        If e.ColumnIndex > e.RowIndex Then
            e.Cancel = False

        Else
            e.Cancel = True
        End If
    End Sub


End Class

Comments