mostafaebead Ответов: 2

В позиции 0 нет строки. В коде


если (pay_typeComboBoxEdit.Текст == "راتب")
{
paidMoneySpinEdit.Толькочтение = истина;
paidMoneySpinEdit.Value = конвертировать.ToDecimal(PROCESS.GET_Salary(emp_idComboBoxEdit.Text, dateDateEdit.значение datetime).Строки[0][0].Метод toString());
}
еще
{
paidMoneySpinEdit.Толькочтение = ложь;
paidMoneySpinEdit.Value = 0;
}

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

покажите эту ошибку при запуске проекта формы в C#

[no name]

Это означает, что у вас нет данных в вашем DataTable. Отлаживать свой код и проверить ....Rows.Count. Скорее всего, это значение будет равно 0

2 Ответов

Рейтинг:
2

Karthik_Mahalingam

Проверьте правильность Index прежде чем получить доступ к нему из collection.

paidMoneySpinEdit.ReadOnly = true;
         DataTable dt = PROCESS.GET_Salary(emp_idComboBoxEdit.Text, dateDateEdit.DateTime);
         if(dt!= null && dt.Rows.Count>0 && dt.Columns.Count>0) { // validate the collection
         paidMoneySpinEdit.Value = Convert.ToDecimal(dt.Rows[0][0].ToString());
         }


Рейтинг:
2

OriginalGriff

Ошибка довольно явная:

There is no row at position 0.

Это означает, что любой процесс.Получите возврат, у него нет строк. Это может быть сделано специально: если нет данных, которые соответствуют вашим критериям (и я предполагаю, что именно для этого предназначен второй параметр), то он не может возвращать информацию о строке.

Я бы посоветовал вам проверить количество строк и сделать что-нибудь, если нет совпадений:
var data = PROCESS.GET_Salary(emp_idComboBoxEdit.Text, dateDateEdit.DateTime);
if (data.Rows.Count > 0)
   {
   paidMoneySpinEdit.Value = Convert.ToDecimal(data.Rows[0][0].ToString());
   }
else
   {
   ...  Up to you
   }