Как исправить «Нет строки в позиции 1» - PullRequest
0 голосов
/ 24 апреля 2019

Я упорядочиваю и извлекаю данные из базы данных в сетку данных, я пытаюсь настроить столбец и строки для отображения требуемых данных, в цикле я пытался сопоставить данные из одного из данных, чтобы получить другие данные для заполненияв сетку данных, к сожалению, я продолжаю получать "Нет строки в позиции 1 ошибка".Я приложил приложение, чтобы проиллюстрировать проблемы, с которыми я столкнулся.Two Illustrations Codes

Я просмотрел некоторые посты в stackoverflow, чтобы решить проблемы, но не могу найти проблемы.1. Ошибка Нет строки в позиции 1 2. Нет строки в позиции 1

    private void generate_view1(DataTable search_data1)
    {
        DataTable sample_data1 = new DataTable();
        sample_data1 = search_data1.Copy();
        sample_data1.Columns.Add("Item_Number");
        sample_data1.Columns.Add("Min_Tolerance");
        sample_data1.Columns.Add("Max_Tolerance");


        var database_select = new DatabaseSelect();
        string OrderNo = Order_NO.Text.ToString();
        DataTable result_data = new DataTable();
        result_data = database_select.LoadTable_DOHEAD(OrderNo);

        string SalesNO = result_data.Rows[0]["EAORNO"].ToString();
        string Del_index = result_data.Rows[0]["EADLIX"].ToString();

        var database_select1 = new DatabaseSelect();
        DataTable result_weight = new DataTable();
        result_weight = database_select.LoadTable_MITTRA(SalesNO, Del_index);


        dataGrid1.ItemsSource = null;
        dataGrid1.ItemsSource = sample_data1.DefaultView;
        DataGridTextColumn Weight1 = new DataGridTextColumn();
        dataGrid1.DisplayMemberPath = sample_data1.Columns["MTTRQT"].ToString();

        Decimal sum = Convert.ToDecimal(sample_data1.Compute("SUM(MTTRQT)", string.Empty));

        Weight.Text = (sum * -1).ToString(); 
         //******Problems occur in below this part*********//
        for (int i = 0; i < sample_data1.Rows.Count; i++)
        {
            string itemcode = sample_data1.Rows[i]["MTITNO"].ToString();
            String ItemNumber = result_weight.Rows[i]["MTITNO"].ToString();

            if (itemcode != " ")
            {
                sample_data1.Rows[i]["Item_Number"] = result_weight.Rows[i]["MTITNO"].ToString();

                var database_select2 = new DatabaseSelect();

                DataTable result_tolerance = new DataTable();
                result_tolerance = database_select.LoadUser_Tolerance(ItemNumber); //** i've include my loadUser Tolerance query in here as well***//
                sample_data1.Rows[i]["Min_Tolerance"] = result_tolerance.Rows[i]["Min_Tol"].ToString();     //*** this is the line where i face the problems***//
                string MINTOL = result_tolerance.Rows[i]["Min_Tol"].ToString();    //*** i've put in this to illustrate the problems**//
                MessageBox.Show(MINTOL);    //*** i've put in this to illustrate the problems**//

            }

        }

Обновлена ​​дополнительная информация (25/4/2019)
Запрос переменной LoadUser_Tolerance (я пытаюсь выбрать минимальный допуск из этого запроса, чтобы вставить его в мою сетку данных) Для желаемых результатов (вы можете ссылаться на иллюстрации выше), у меня возникают эти проблемы, только когда я пытаюсь отобразить MinTolerance для отображенияв моей DataGrid.Я не могу понять, как сделать это правильно.

    public DataTable LoadUser_Tolerance(string ItemNO)
    {
        OdbcConnection conn = new OdbcConnection();
        conn.ConnectionString = ConString;
        conn.Open();
        CmdString = "SELECT Item_NO, Min_Tol, Max_Tol FROM MasTolerance where Item_NO ='" + ItemNO + "'";
        OdbcCommand cmd = new OdbcCommand(CmdString, conn);
        OdbcDataAdapter sda = new OdbcDataAdapter(cmd);
        DataTable dt = new DataTable("MasTolerance");
        sda.Fill(dt);
        return dt;
    }

Попытки отладки. Попытка.

       if (result_tolerance.Rows.Count > i)
       {
         sample_data1.Rows[i]["Min_Tolerance"] = result_tolerance.Rows[i]["Min_Tol"].ToString();
         string MINTOL = result_tolerance.Rows[i]["Min_Tol"].ToString();
         MessageBox.Show(MINTOL + i);
       }
       else
       {
           MessageBox.Show("Error"); //** i can display the Item number in row 1, but Min tolerance for the Row 1 can't be display**//

       }

Извините, что все это так долго, но у меня нет выбора.

...