C # - Как заполнить существующий DataGridView данными из базы данных Access - PullRequest
0 голосов
/ 07 мая 2018

Я работаю в системе Tool Crib. Мне нужно иметь способ заполнить свой dataGridView прошлыми заказами на покупку. Список PO на левой стороне, чтобы заполнить DataGridView . Я использовал это раньше, чтобы заполнить gridViews:

        con.Open();
        OleDbCommand cmd = new OleDbCommand();
        cmd.Connection = con;
        string orderNumber = lbOrders.SelectedItem.ToString();
        string query = "SELECT PartNumber from PurchaseOrders WHERE PONumber LIKE '%" + orderNumber + "%' ";
        cmd.CommandText = query;
        //OleDbDataReader reader = cmd.ExecuteReader();
        cmd.ExecuteNonQuery();

        OleDbDataAdapter da = new OleDbDataAdapter(cmd);
        DataTable dt = new DataTable();
        da.Fill(dt);
        dataGridView1.DataSource = dt;

Однако я не знаю, как заполнить существующую таблицу dataGridView. Как и в случае, я не знаю, как использовать столбцы, которые у меня уже есть для создания заказов на покупку. Da.Fill (dt) просто добавляет все новые столбцы, и я получаю дополнительный столбец и много пустых ячеек.

Дополнительный столбец для PartNumber

Я пытался просто заполнить столбец Элемент этим кодом:

        string query = "SELECT PartNumber from PurchaseOrders WHERE PONumber LIKE '%" + orderNumber + "%' ";
        cmd.CommandText = query;
        OleDbDataReader reader = cmd.ExecuteReader();
        //cmd.ExecuteNonQuery(); //not using this code

        //OleDbDataAdapter da = new OleDbDataAdapter(cmd); //not using this code
        //DataTable dt = new DataTable(); //not using this code
        //da.Fill(dt); //not using this code
        //dataGridView1.DataSource = dt; //not using this code

        List<string> result = new List<string>();

        for (int i = 0; i < result.Count - 1; i++)
            while (reader.Read())
        {
            result.Add(reader.GetString(0));
            //dataGridView1.Rows[0].Cells["Item"].Value = (reader["PartNumber"]).ToString(); //not using this code
        }

        for (int i = 0; i < result.Count-1; i++)
        {
            foreach (var item in result)
            {
                dataGridView1.Rows[i].Cells["Item"].Value = result[i];
            }
        }
        con.Close();

Этот код работал для меня. Тем не менее, он продолжал говорить, что мой индекс находится вне диапазона и никогда не будет заполнять столбец «Элемент» правильно / полностью. Другим недостатком этого является то, что мне все еще нужно было ввести количество. У меня есть сетка вносит другую информацию, когда происходит изменение значения ячейки. Он просматривает базу данных товаров, чтобы получить описание и цену, поэтому все, что мне нужно сделать, - это заполнить столбцы Товар и количество.

Я занимаюсь этим уже несколько часов, и мне нужна помощь.

Сводка: мне нужен способ заполнить свой столбец Элемент и Количество номерами деталей и количествами, хранящимися в базе данных Access - столбцы БД [PO #, PartNumber, Количество]

Извините, если это кажется большим / недостаточно информации. Мне просто нужна помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...