Mahesh2223 Ответов: 2

Ошибка преобразования при преобразовании значение переменной типа char в int активный


У меня есть выпадающий список с активными именами, назначенными и т. д..

Это я добавляю в коде позади я получаю ошибку, как преобразование не удалось.
cmd.Parameters.Add("@Status", SqlDbType.NVarChar).Value = ddlState.SelectedItem.Value;
Это часть моей процедуры
else if(@Status!=0  AND @GroupId = 0)
Begin
select A.GroupName , B.Brand , B.Model , B.SerialNo , B.Status, B.AddedOn from
GroupDetails as A
inner join
DeviceDetails as B
on A.GroupId = B.GroupId where SerialNo like  '%%' AND B.Status = @Status
End

из-за этого возникает ошибка..

пожалуйста, исправьте меня..
предложения??
помочь??

Что я уже пробовал:

Где я иду не так, как это сделать .. пожалуйста, помогите

Graeme_Grant

Пожалуйста, поделитесь сообщением об ошибке в вашем вопросе, нажав на кнопку "улучшить вопрос" справа от вашего имени.

F-ES Sitecore

Что такое @Status? Вы добавляете его как varchar, но используете его как int в SP, сравнивая его с 0. Если @Status - это "Hello World", то как вы можете сравнить это с 0?

Если @Status является int, то сделайте это так в SP, а затем преобразуйте ddlState.SelectedItem к int, когда вы добавляете его в коллекцию параметров и меняете тип параметра тоже.

Чтобы опередить ваш следующий вопрос, google " c# convert string to int"

2 Ответов

Рейтинг:
1

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Из кода Вы отправляете NVarchar, но используете его для сравнения с целым числом, что совершенно неправильно.

Вы должны заставить их синхронизироваться. Используйте один тип данных на обоих концах.


Рейтинг:
0

OriginalGriff

Почему вы передаете значение varchar параметру, который используете в качестве целого числа?
Потому что это то, что вы делаете - когда вы делаете сравнение целых чисел:

if(@Status!=0  AND @GroupId = 0)
система пытается преобразовать строку в @Status в целочисленное значение. И в этом случае он терпит неудачу, потому что все, что вы передали, не является целым числом.

Либо измените тест для сравнения строк:
if(@Status != '0'  AND @GroupId = 0)

Или, еще лучше, выясните, что находится в вашем выпадающем списке, и либо исправьте источник, либо проверьте его.