void BuildDiagram()
{
chartRating.Series[0].Points.Clear();
foreach (DataRow r in ClientsTable.Rows)
if (Convert.ToInt16(r[3]) != 0)
chartRating.Series[0].Points.AddXY(r[1], r[3]);
}
Convert.ToInt16
выбрасывает OverflowException
если переданное значение не укладывается в диапазон Int16
, т.е. от -32768 до 32767.
Варианты решения проблемы:
Int32
, Int64
, или Decimal
;if(Convert.ToDecimal(r[3])!=0)
r[3]
и привести к нему.Если после этого зачем-то потребуется привести к Int16
, то нужно учесть границы диапазона, либо привести между числовыми типами с переполнением:
int value = Convert.ToInt32(r[3]);
short shortValue = (short) value;
"Исключение, которое выдается, если выполнение арифметической операции, операции приведения к типу или преобразования в проверяемом контексте приводит к переполнению." На Msdn
Convert.ToInt16(r[3])
- ошибка скорее всего тут.
Если r[3]
является объектом, который имеет тип Int32
, то можете использовать следующий метод явного преобразования: (Int16)r[3]
.
В настройках проекта на вкладке Build жмём кнопку Advanced и снимаем галочку Check for arithmetic overflow, тогда ошибки переполнения не возникнет.
Важно понимать, что при таком переполнении в этом примере (Int16)r[3]
вы получите неожиданный результат.
Если r[3]
является строкой, то попробуйте воспользоваться конструкцией: try {} catch {}
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня на локалке форма с капчей срабатывает На локалке, а на сервере пишет ОшибкаСообщение не отправлено!
При загрузке Extension в Twig, происходит ошибка Unable to register extension "SectionParser" as extensions have already been initialized
Как сделать в Yii2 консольное обращение? Господа прошу подсказать
Не работает этот запросВ phpmyadmin сам запрос дает результат, таблица обновляется, но когда я запускаю php-скрипт работать не хочет