Как использовать запрос на выборку с 3 таблицами объединения для загрузки данных в DataGridView и TextBoxes? - PullRequest
0 голосов
/ 30 мая 2018

Я попытался это загрузить данные в DataGridView и TextBoxes. Но ошибка сказала "неоднозначное имя столбца PO_No".Итак, как решить эту проблему

public void loadPOCarttable()
    {
        DynamicConnection con = new DynamicConnection();

        try
        {
            con.sqlquery("SELECT p.PO_No,p.Supplier_ID,p.Date,p.RequiredDate,p.GrandTotal,b.BookName,c.ISBN_No,c.OrderQuantity,c.UnitPrice,c.Total FROM  TBL_PO_Cart AS c INNER JOIN TBL_Book AS b ON c.ISBN_No = b.ISBN_No INNER JOIN TBL_PO AS p ON c.PO_No=p.PO_No where PO_No='" + cmbPO.Text + "'");
            con.mysqlconnection();
            con.datatable();
            con.dataread();             
            this.dataGridView1.Rows.Clear();
            while (con.datareader.Read())
            {
                DataGridViewRow row = (DataGridViewRow)dataGridView1.Rows[0].Clone();
                row.Cells[0].Value = con.datareader["BookName"].ToString();
                row.Cells[1].Value = con.datareader["ISBN_No"].ToString();
                row.Cells[2].Value = con.datareader["OrderQuantity"].ToString();
                row.Cells[3].Value = con.datareader["UnitPrice"].ToString();
                row.Cells[4].Value = con.datareader["Total"].ToString();
                dataGridView1.Rows.Add(row);

            }
            SqlDataAdapter da = new SqlDataAdapter(con.cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                txtPONo.Text = ds.Tables[0].Rows[i][0].ToString();
                cmbsupID.Text= ds.Tables[0].Rows[i][1].ToString();
                date1.Text= ds.Tables[0].Rows[i][2].ToString();
                requireddate.Text= ds.Tables[0].Rows[i][3].ToString();
                txtgrandTotal.Text= ds.Tables[0].Rows[i][4].ToString();

            }

        }
        catch (Exception ex)
        {
            MessageBox.Show("Error Occured" + ex.Message);
        }
    }

Я пробовал приведенный выше код. Но это не сработало. Поэтому, пожалуйста, кто-нибудь может мне сказать, как загрузить данные 3 таблиц в DataGridView и несколько текстовых ящиков, чтобы обновить эту информацию.

1 Ответ

0 голосов
/ 30 мая 2018

Последняя часть вашего оператора SQL имеет PO_No= без префикса таблицы.Когда выполняется оператор Sql, Sql Server не знает, хотите ли вы использовать таблицу TBL_PO или TBL_PO_Cart.

. Чтобы исправить это, поставьте соответствующий префикс таблицы: p или c.в зависимости от того, по которому вы хотите фильтровать.

...