Как отобразить правильные данные? - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть 2 вида сетки данных, теперь я хочу выбрать столбец с именем «Имя» в первом представлении данных и использовать его в качестве ГДЕ в моем запросе, чтобы выбрать значения из таблицы и поместить его в другое представление данных.

   SqlCommand cmd = new SqlCommand();
   cmd = ss.CreateCommand();
   foreach (DataGridViewRow row in dgvAtt.Rows)
   {
     ss.Open();
     cmd.CommandType = CommandType.Text;
     string Query = "SELECT Signature FROM TBL_Student WHERE Name = '" + 
     row.Cells[4].Value.ToString() + "' ";
     cmd.CommandText = Query;
     cmd.ExecuteNonQuery();
     DataTable dt = new DataTable();
     SqlDataAdapter dp = new SqlDataAdapter(cmd);
     dp.Fill(dt);
     dgvSign.DataSource = dt;
     ss.Close();
    }

но это дает мне ошибку, когда есть ноль, и он только выбирает первую строку в первом просмотре данных.

1 Ответ

0 голосов
/ 09 февраля 2019

Вы создаете в каждом foreach -цикле новый DataTable, и поэтому он всегда будет иметь только одно значение.Таким образом, вы должны создать его до цикла foreach.

И убедитесь, что вы проверяете Values, который хотите использовать, прежде чем использовать их.С этим простым if условием проблем не будет.


Edit1:

Этот фрагмент кода работает просто отлично.Просто измените ConnectionString и все готово.

DataTable dt = new DataTable();
string error;
using (SqlConnection con = new SqlConnection(@"Data Source=SERVER;Initial Catalog=DATEBASE; User ID=USERNAME; Password=PASSWORD"))
{
    SqlCommand cmd = new SqlCommand();

    foreach (DataGridViewRow row in dgvAtt.Rows)
    {
        string Query = "SELECT Signature FROM TBL_Student WHERE Name = '";
        if (row.Cells.Count >= 4 && row.Cells[4].Value != null)
        {
            Query += row.Cells[4].Value.ToString();
        }
        Query += "'";

        try
        {
            cmd = new SqlCommand(Query, con);

            if (con.State == ConnectionState.Closed)
                con.Open();

            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            adapter.Fill(dt);
        }
        catch (Exception ex)
        {
            error = ex.Message;
        }
    }
}
dgvSign.DataSource = dt;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...