Member 7946563 Ответов: 3

Невозможно неявно преобразовать тип "decimal" в "int". Существует явное преобразование (вы пропускаете приведение?).


Привет,

Я вызываю функцию GetSerialNo, но она показывает какую-то ошибку, например:

Невозможно неявно преобразовать тип "decimal" в "int". Существует явное преобразование (вы пропускаете приведение?).

Может ли кто - нибудь помочь мне решить эту проблему.

Вот этот код:

int slNo= GetSerailNo(keydata);



private int GetSerailNo(String keydata)
	{
        
        SqlConnection con = new SqlConnection(@"server=Servername;database=DBNAME;uid=Username;pwd=Pwd;max pool size=250;Connect Timeout=0");
        con.Open();
		cmd = new SqlCommand("select isnull(max(slno)+1,1) from d001docs where source_keydata='" + keydata + "'", con);
		dynamic no = cmd.ExecuteScalar();
		cmd.Dispose();
		con.Close();
		return no;
	}</pre>

Thanks in advance

3 Ответов

Рейтинг:
23

CPallini

no является decimal в то время как возвращаемое значение вашей функции равно int отсюда и ошибка (decimal тип данных шире, чем int) вы можете либо:

  • Измените свою функцию (и свой slNo переменная) тип данных decimal.

или
  • Явно брошенный no к int:
    return (int) no;

    (предупреждение: используйте этот метод только в том случае, если вы уверены, что значения всегда будут соответствовать int диапазон).


Sergey Alexandrovich Kryukov

ОП должен вернуться к основам. Мой 5.
--СА

Рейтинг:
1

Christian Graus

Оно означает то, что говорит. Ваш код передает десятичную дробь, где ожидается int. Вам нужно явно привести его с помощью Convert.ToInt(), я думаю. Я предполагаю, что проблема заключается в вашем типе возврата, почему бы просто не изменить его ? Кроме того, купите книгу на C# и прочитайте ее, сообщения об ошибках не становятся более ясными, чем это.


Рейтинг:
1

Sudhir Kumar Srivastava lko

динамический no = cmd.Executescalar так();

и нужно явно привести не в целое число,