Как заполнить Datatable данными InnerJoin Sql - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь заполнить таблицу следующим кодом. но я не уверен в правильном способе сделать это.

using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.KanbanDatabase))
            {
                DataTable dat = new DataTable();
                dat.Columns.AddRange(new DataColumn[13] { new DataColumn("O_Date"), new DataColumn("O_User"), new DataColumn("O_Material"), new DataColumn("O_Description"), new DataColumn("O_Sloc"), new DataColumn("O_Supplier"), new DataColumn("O_StandardPack"), new DataColumn("O_KanbanSize"), new DataColumn("O_Qty"), new DataColumn("Entry Date"), new DataColumn("PO"), new DataColumn("O_Urgency"), new DataColumn("Quantity") });
                string SqlQry = "SELECT Kanban_Order.[O_Date], Kanban_Order.[O_User], Kanban_Order.[O_Material], Kanban_Order.[O_Description], Kanban_Order.[O_Sloc], Kanban_Order.[O_Supplier], Kanban_Order.[O_StandardPack], Kanban_Order.[O_KanbanSize], Kanban_Order.[O_Qty], Kanban_GR101.[Entry Date], Kanban_GR101.[PO], Kanban_Order.[O_Urgency], Kanban_GR101.[Quantity]";
                SqlQry = SqlQry + "FROM Kanban_Order, Kanban_GR101";
                SqlQry = SqlQry + "WHERE Kanban_Order.[O_Material] = Kanban_GR101.[Material] AND O_Date BETWEEN @dateFrom AND  @dateTo";
                using (SqlCommand cmd = new SqlCommand(SqlQry, conn))
                {
                    cmd.Parameters.AddWithValue("@dateFrom", dateFrom);
                    cmd.Parameters.AddWithValue("@dateTo", dateTo);
                    SqlDataAdapter da = new SqlDataAdapter();
                    da.SelectCommand = cmd;
                    conn.Open();
                    DataSet ds = new DataSet();
                    da.Fill(ds,dat);
                    Status1.DataSource = dat;
                    Status1.DataBind();

Этот код не работает. Что еще я могу сделать?

Ответы [ 2 ]

1 голос
/ 20 июня 2019

попробуйте так

private DataTable GetDataTable()
    {
        try
        {
            string strQuery = "Your SQL Query";
            string strConnectionString ="Your Connection String";
            using (SqlConnection Connection = new SqlConnection(strConnectionString))
            {
                using (SqlCommand cmd = new SqlCommand(strQuery))
                {
                    using (SqlDataAdapter da = new SqlDataAdapter())
                    {
                        cmd.CommandType = CommandType.Text;
                        cmd.Connection = Connection;
                        da.SelectCommand = cmd;
                        DataTable dt = new DataTable();
                        da.Fill(dt);
                        return dt;
                    }
                }
            }
        }
        catch (Exception ex)
        {

            throw ex;
        }

    }

ИСПОЛЬЗОВАНИЕ GetDataTable функция

Datatable dt = GetDataTable();
0 голосов
/ 20 июня 2019

Всегда есть пробелы там.Лучший способ убедиться, что он работает, - это отладить и проверить SQL, сгенерированный и запущенный на SQL-сервере, чтобы проверить, если не уверены.Вы быстро его подберете.

using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.KanbanDatabase))
            {
                DataTable dat = new DataTable();
                dat.Columns.AddRange(new DataColumn[13] { new DataColumn("O_Date"), new DataColumn("O_User"), new DataColumn("O_Material"), new DataColumn("O_Description"), new DataColumn("O_Sloc"), new DataColumn("O_Supplier"), new DataColumn("O_StandardPack"), new DataColumn("O_KanbanSize"), new DataColumn("O_Qty"), new DataColumn("Entry Date"), new DataColumn("PO"), new DataColumn("O_Urgency"), new DataColumn("Quantity") });
                StringBuilder _sqlQuery = new StringBuilder("SELECT Kanban_Order.[O_Date], Kanban_Order.[O_User], Kanban_Order.[O_Material], Kanban_Order.[O_Description], Kanban_Order.[O_Sloc], Kanban_Order.[O_Supplier], Kanban_Order.[O_StandardPack], Kanban_Order.[O_KanbanSize], Kanban_Order.[O_Qty], Kanban_GR101.[Entry Date], Kanban_GR101.[PO], Kanban_Order.[O_Urgency], Kanban_GR101.[Quantity]");
                _sqlQuery.Append(" FROM Kanban_Order, Kanban_GR101");
                _sqlQuery.Append($" WHERE Kanban_Order.[O_Material] = Kanban_GR101.[Material] AND O_Date BETWEEN '{dateFrom}' AND  '{dateTo}'");
                using (SqlCommand cmd = new SqlCommand(_sqlQuery.ToString() , conn))
                {
                    SqlDataAdapter da = new SqlDataAdapter();
                    da.SelectCommand = cmd;
                    conn.Open();
                    DataSet ds = new DataSet();
                    da.Fill(ds,dat);
                    Status1.DataSource = dat;
                    Status1.DataBind();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...