повлиять на результат запроса SQL в текстовое поле - PullRequest
0 голосов
/ 14 марта 2019

я использую sqlserver 2008 и vb.net я пытался повлиять на результат запроса sql к моим текстовым полям.здесь код, который я попробовал

  Dim rd As SqlDataReader
    Try
        Cn.Open()
        cmd = New SqlCommand("SELECT pk_veh, désignation, projet, version, [taille de lot] from [Cutting software].dbo.vehicule  WHERE désignation = '" & Form1.ComboBox3.SelectedValue & "'", Cn)
        rd = cmd.ExecuteReader
        While rd.Read
            imp.TextBox1.Text = rd.GetInt32("pk_veh")
            imp.TextBox2.Text = rd.GetString("désignation")
            imp.TextBox3.Text = rd.GetString("projet")
            imp.TextBox4.Text = rd.GetString("version")
            imp.TextBox5.Text = rd.GetInt32("[taille de lot]")
            imp.Show()
        End While
        Cn.Close()
    Catch ex As SqlException
        MessageBox.Show(ex.Message)
    End Try
End Sub

, пока я проверял тип моих столбцов, у меня всегда есть эта ошибка

System.InvalidCastException: 'La conversion de la chaîne "pk_veh" en type 'Integer' n'est pas valide.'FormatException: Input string was not in a correct format.

здесь тип моих столбцов

pk_veh, [taille de lot]: int
дизайн, projet, версия: varchar [50]

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

вот решение

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    Dim rd As SqlDataReader
    Try
        Cn.Open()
        Dim cmd As New SqlCommand("SELECT isnull(pk_veh,0)pk_veh, isnull(designation,'')designation, isnull(projet,'')projet, isnull(version,'')version, isnull(taille_de_lot,0)taille_de_lot from [Cutting software].dbo.vehicule  WHERE designation =  '" & Form1.ComboBox3.SelectedValue & "'", Cn)
        rd = cmd.ExecuteReader
        While rd.Read
            imp.TextBox1.Text = rd.GetInt32(0)
            imp.TextBox2.Text = rd.GetString(1)
            imp.TextBox3.Text = rd.GetString(2)
            imp.TextBox4.Text = rd.GetString(3)
            imp.TextBox5.Text = rd.GetInt32(4)
        End While
        Cn.Close()
    Catch ex As SqlException
        MessageBox.Show(ex.Message)
    End Try
    imp.Show()
End Sub
0 голосов
/ 14 марта 2019

Эта ошибка возникает, когда вы пытаетесь преобразовать что-то, не являющееся действительным целым числом, в целое число.

Попробуйте проверить, является ли строка DbNull перед приведением ее значения к TextBox, или попробуйте использовать ISNULL(value, 0) чтобы убедиться, что вы не получаете пустых значений в этом столбце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...