Datagridview c# access. Меняю строку меняется весь столбец

134
13 января 2020, 22:50

datagridview c# access. Меняю строку меняется весь столбец. Например меняю сумму "Пользователь 1" от суммы 100 на 200. И вся таблица меняется.

private void LoadBet() {
        var sql = @"select bId,cId,ksid,ksView,cName,bDate,bSum,bCoef,bView
from Client,Bet,KindSport where bKindSportid=ksid and bClientid=cid";
            var da = new OleDbDataAdapter(sql, Db.Connection);
            var ds = new DataTable();
            da.Fill(ds);
            dgvBet.DataSource = ds;
         //   dgvBet.DataMember = ds.Tables[0].TableName;
            dgvBet.Columns["bid"].Visible = false;
            dgvBet.Columns["cid"].Visible = false;
            dgvBet.Columns["ksid"].Visible = false;

        dgvBet.Columns["cName"].HeaderText = @"ФИО";
        dgvBet.Columns["cName"].Width = 150;
        dgvBet.Columns["bDate"].HeaderText = @"Дата";
        dgvBet.Columns["bDate"].Width = 150;
        dgvBet.Columns["ksView"].HeaderText = @"Вид спорта";
        dgvBet.Columns["ksView"].Width = 150;
        dgvBet.Columns["bSum"].HeaderText = @"Сумма";
        dgvBet.Columns["bSum"].Width = 150;
        dgvBet.Columns["bCoef"].HeaderText = @"Коэффициент";
        dgvBet.Columns["bCoef"].Width = 150;
        dgvBet.Columns["bView"].HeaderText = @"Вид ставки";
        dgvBet.Columns["bView"].Width = 150;
    }
//Добавить ставки
      private void BetAdd_Click(object sender, EventArgs e)
        {
            // создаем форму редактирования
            var f = new FmBet();
            // показывать диалог с редактированием
            if (f.ShowDialog() == DialogResult.OK)
            {
                var cmd = new OleDbCommand(@"insert into Bet(bClientid,bDate,
bKindSportId,bSum,bCoef,bView) values (?,?,?,?,?,?)")
                {
                    Connection = Db.Connection,
                    CommandType = CommandType.Text
                };
                cmd.Parameters.AddWithValue(@"bClientid", f.Bet.bClientId);
                cmd.Parameters.AddWithValue(@"bDate", f.Bet.bDate);
                cmd.Parameters.AddWithValue(@"bKindSportId", f.Bet.bKindSportId);
                cmd.Parameters.AddWithValue(@"bSum", f.Bet.bSumm);
                cmd.Parameters.AddWithValue(@"bCoef", f.Bet.bCoef);
                cmd.Parameters.AddWithValue(@"bView", f.Bet.bView);
                cmd.ExecuteNonQuery();
                LoadBet();
            }
        }

    //Изменить ставки
    private void BetEdit_Click(object sender, EventArgs e)
    {
        if (dgvBet.CurrentCell == null) return;
        var i = dgvBet.CurrentCell.RowIndex;
        var f = new FmBet();
        f.Bet.bId = (int)dgvBet.Rows[i].Cells["bid"].Value;
        f.Bet.bClientId = (int)dgvBet.Rows[i].Cells["cid"].Value;
        f.Bet.bDate = Convert.ToDateTime(dgvBet.Rows[i].Cells["bDate"].Value);
        f.Bet.bSumm = Convert.ToDouble(dgvBet.Rows[i].Cells["bSum"].Value);
        f.Bet.bKindSportId = (int)dgvBet.Rows[i].Cells["ksId"].Value;
        f.Bet.bCoef = Convert.ToDouble(dgvBet.Rows[i].Cells["bCoef"].Value);
        f.Bet.bView = Convert.ToString(dgvBet.Rows[i].Cells["bView"].Value);
        if (f.ShowDialog() == DialogResult.OK)
        {
            var cmd = new OleDbCommand(@"update Bet set bClientid=?,bDate=?,
            bKindSportId=?, bSum=?,bCoef=?,bView=?")
            {
                Connection = Db.Connection,
                CommandType = CommandType.Text
            };
            cmd.Parameters.AddWithValue(@"bClientId", f.Bet.bClientId);
            cmd.Parameters.AddWithValue(@"bDate", f.Bet.bDate);
            cmd.Parameters.AddWithValue(@"bKindSportId", f.Bet.bKindSportId);
            cmd.Parameters.AddWithValue(@"bSum", f.Bet.bSumm);
            cmd.Parameters.AddWithValue(@"bCoef", f.Bet.bCoef);
            cmd.Parameters.AddWithValue(@"bView", f.Bet.bView);
            cmd.Parameters.AddWithValue(@"bId", f.Bet.bId);
            cmd.ExecuteNonQuery();
            LoadBet();
        }
    }

    //Удалить ставки
    private void BetDelete_Click(object sender, EventArgs e)
    {
        if (dgvBet.CurrentCell == null) return;
        if (MessageBox.Show(@"Удалить?", @"Удалить", MessageBoxButtons.YesNo) != DialogResult.Yes) return;
        var i = dgvBet.CurrentCell.RowIndex;
        var id = dgvBet.Rows[i].Cells["bId"].Value;
        var cmd = new OleDbCommand(@"delete from Bet where bId=?")
        {
            Connection = Db.Connection,
            CommandType = CommandType.Text
        };
        cmd.Parameters.AddWithValue(@"bId", id);
        cmd.ExecuteNonQuery();
        LoadBet();
    }
Answer 1

У Вас в запросе отсутствует предложение WHERE.В таких случаях обновляется вся таблица.

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

var cmd = new OleDbCommand(@"update Bet set bClientid=?,bDate=?,bKindSportId=?, bSum=?,bCoef=?,bView=? WHERE bId=?");
READ ALSO
Как можно преобразовать List<Class> в List<String>

Как можно преобразовать List<Class> в List<String>

При попытке заполнить список "List<Signal>" данными типа String из Csv файла возникает ошибка: "Не удается преобразовать String в DataGatherSignal", можно ли как-то...

108
Почему не синхронизируются объекты?

Почему не синхронизируются объекты?

Network Transform и Network Identity на префабе bullet естьНо у каждого игрока спавнятся свои префабы, которые не отображаются на экране соперника

136
Каталог информации с фильтром

Каталог информации с фильтром

подскажите где можно найти шаблон или пример для MVC5 и ASPNET (в лучшем случае) который позволял бы реализовать каталогизацию блоков информации...

119