Я пытаюсь создать функцию поиска, которая использует TextBox и два DropDownLists для возврата записей из моей базы данных MSSQL. Способ, которым я настроен, - это передать поисковые запросы через QueryStrings в GridView на отдельной странице. Вот что у меня есть для функции поиска:Ошибка конверсии при преобразовании значения varchar '[]' в тип данных int
Partial Class Includes_LeftCol
Inherits System.Web.UI.UserControl
Public Sub btnSearch_Click(sender As Object, e As System.EventArgs) Handles btnSearch.Click
Dim SelectURLRangePrice As String
If tbxSearch.Text.Length = 0 And ddlRangeName.SelectedValue = "" And ddlPriceRange.SelectedValue = "" Then
SelectURLRangePrice = "SearchResults.aspx"
Response.Redirect(SelectURLRangePrice)
ElseIf tbxSearch.Text.Length = 0 And ddlRangeName.SelectedValue = "" And ddlPriceRange.SelectedValue.Length > 0 Then
SelectURLRangePrice = "SearchResults.aspx?price=" & ddlPriceRange.Text
Response.Redirect(SelectURLRangePrice)
ElseIf tbxSearch.Text.Length = 0 And ddlRangeName.SelectedValue.Length > 0 And ddlPriceRange.SelectedValue.Length > 0 Then
SelectURLRangePrice = "SearchResults.aspx?range=" & ddlRangeName.Text & "&price=" & ddlPriceRange.Text
Response.Redirect(SelectURLRangePrice)
End If
Dim SelectURLRange As String
If tbxSearch.Text.Length = 0 And ddlRangeName.SelectedValue.Length = 0 Then
SelectURLRange = "SearchResults.aspx"
Response.Redirect(SelectURLRange)
ElseIf tbxSearch.Text.Length = 0 And ddlRangeName.SelectedValue.Length > 0 Then
SelectURLRange = "SearchResults.aspx?range=" & ddlRangeName.Text
Response.Redirect(SelectURLRange)
End If
Dim SelectURL As String
If tbxSearch.Text.Length = 0 Then
SelectURL = "SearchResults.aspx"
Response.Redirect(SelectURL)
ElseIf tbxSearch.Text.Length > 0 Then
SelectURL = "SearchResults.aspx?search=" & tbxSearch.Text
Response.Redirect(SelectURL)
End If
End Sub
End Class
А вот мой SQL заявление:
SELECT Product_Rental, Product_ID, Range_Name, Model_Name, Product_Name, Product_Year, Product_Code, Product_Active, Product_DateAdded
FROM Products
WHERE (Range_Name LIKE '%' + @Range_Name + '%') OR
(Model_Name LIKE '%' + @Model_Name + '%') OR
(Product_Name LIKE '%' + @Product_Name + '%') OR
(Product_Code LIKE '%' + @Product_Code + '%') OR
(Product_Year LIKE '%' + @Product_Year + '%') OR
(Product_Rental BETWEEN @Product_Rental AND @Product_Rental + 50)
После отправки, я получаю следующее сообщение об ошибке:
Конверсия удалось при преобразовании значения VARCHAR '[например 209.35] 'к типу данных int.
Я новичок в этом, так извиняюсь, если это что-то глупое, и я старался как можно раньше до публикации, но я просто не могу пройти мимо этого.
Заранее спасибо.
Какой тип поля Product_Rental и что в нем находится? Какой тип переменной @Product_Rental, и что в ней? Это сообщение об ошибке сообщает вам, что значение varchar, которое является проблематичным, имеет две квадратные фигурные скобки и аббревиатуру '', например, ''. Это говорит вам, что все между этими отметками находится в ценности, которую он не может преобразовать. Проверьте свои входы. Похоже, у вас есть значение метки «cue» как фактический текст на входе, и вы отправляете это, не проверяя, действительно ли оно. –
Поле Product_Rental является VARCHAR, а переменная @Product_Rental является строкой. Их содержание - это цены, поэтому они могут иметь до двух знаков после запятой. К сожалению, я помещаю [] в сообщение об ошибке в качестве примера. – jimmyahughes
Что-то не похоже на то, что SQL лает, что это INT, но независимо, если Product_Rental - это цены, тогда я бы рекомендовал, чтобы ваш тип SQL DB был FLOAT, DECIMAL или MONEY. – N0Alias