Как решить проблему сбоя преобразования при преобразовании значения varchar в тип данных int VB.NET-что?
Я использую базу данных sql и элемент управления datagridview в vb.net форма для отображения данных из БД. У меня есть текстовое поле и кнопка поиска, при нажатии на которую продукт с этим именем[Product Name] В sql типа nvarchar(MAX) или код[Product Code] в sql типа int ищется и отображается в datagridview. Когда я ввожу [код продукта] в текстовое поле, он отображает продукт правильно, но когда я ввожу
[Product Name]
оператор select, который я использую, таков USE [Sales And Inventory] SELECT [Product Code],[Product Name],[Price],[Discount],[VAT],[Quantity] FROM [dbo].[PRODUCTS] WHERE [Product Code]=@d1 or [Product Name] = @d2
Я получаю эту ошибку
'conversion failed when converting the varchar value to datatype int vb.net
Интересно то, что когда я удаляю либо то, либо другое
[Product Code]
или [Product Name]
в where
и это прекрасно работает.Но я хочу, чтобы кнопка поиска выполняла поиск и фильтрацию записей при вводе кода продукта или использования продукта или инструкции.
Что я уже пробовал:
If TextBox1.Text = Nothing Then MessageBox.Show("Please enter product to search.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Warning) Else Try Using con As New SqlConnection(cs) con.Open() cmd = New SqlCommand("USE [Sales And Inventory] SELECT [Product Code],[Product Name],[Price],[Discount],[VAT],[Quantity] FROM [dbo].[PRODUCTS] WHERE [Product Code]=@d1 or [Product Name] = @d2", con) cmd.Parameters.AddWithValue("@d1", TextBox1.Text) cmd.Parameters.Add("@d2", SqlDbType.NVarChar).Value = TextBox1.Text rdr = cmd.ExecuteReader productdatagridview.Rows.Clear() If rdr.HasRows Then While rdr.Read productdatagridview.Rows.Add(rdr(0), rdr(1), FormatCurrency(rdr(2)), String.Format("{0:n}", rdr(3)), String.Format("{0:n}", rdr(4)), CInt(rdr(5)).ToString("###,###")) End While Else MessageBox.Show("Product Not Found. Please try again.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning) Button4.PerformClick() End If con.Close() End Using Catch ex As Exception MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End If