Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаляю, но сообщение не в тему... Параметр не имеет значения по умолчанию 
V
    Опции темы
Doss
Дата 22.6.2008, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 5.10.2007

Репутация: нет
Всего: нет



Приветствую всех!
создал прогу, которая вносит, удаляет  апдейтит.
Все бы хорошо, но при удалении строки, которую выделяю в DataGridView выдает сообщеие: 
Параметр "ID_test" не имеет значения по умолчанию
Вот код
Код

da.DeleteCommand = new OleDbCommand("DELETE * FROM TB WHERE ID_test=@ID_test", conn);//Вот здесь место ID_test если ставлю любой параметр, то все равно пишет тоже самое...
            da.DeleteCommand.CommandType = CommandType.Text;
            param = da.DeleteCommand.Parameters.Add(new OleDbParameter("@ID_test", OleDbType.Integer));
            param.SourceColumn = "ID_test";
            param.SourceVersion = DataRowVersion.Current;

            param = da.DeleteCommand.Parameters.Add(new OleDbParameter("@id", OleDbType.Char));
            param.SourceColumn = "id";
            param.SourceVersion = DataRowVersion.Current;

            param = da.DeleteCommand.Parameters.Add(new OleDbParameter("@test", OleDbType.Char));
            param.SourceColumn = "test";
            param.SourceVersion = DataRowVersion.Current;


По клику удаляю
Код

 //Удаление записи
        private void button2_Click(object sender, EventArgs e)
        {
           
            DataView dataView = new DataView(ds.Tables["База"]);
                      
                foreach (DataGridViewRow r in dgv.SelectedRows)
                {                   
                   
                    DataRow sRow = dataView[r.Index].Row;
                    sRow.Delete();
                    da.DeleteCommand.ExecuteNonQuery();
                    sRow.AcceptChanges(); //По идее удаление должно подтвердиться

                }
                               DataSet xDataSet = new DataSet();
                xDataSet = ds.GetChanges(DataRowState.Added | DataRowState.Modified | DataRowState.Deleted);
                da.Update(xDataSet, "База");

Заранее благодарен!
PM MAIL   Вверх
Magnifico
Дата 22.6.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 23.1.2008
Где: Московская област ь

Репутация: 2
Всего: 17



DELETE * FROM TB  таблица называется "TB" откуда взялась "База"

 
Цитата

DataView dataView = new DataView(ds.Tables["База"]);
da.Update(xDataSet, "База");

"ID_test" дожен быть первичным ключем

Код

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        OleDbConnection con;
        OleDbDataAdapter da;
        DataSet ds;
        OleDbParameter param;
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\base.mdb;User Id=admin;Password=;");
                con.Open();
                if (con.State == ConnectionState.Open)
                    MessageBox.Show("Соединение установлено");
                da = new OleDbDataAdapter();
                da.SelectCommand = new OleDbCommand("Select * From TB", con);
                //  -----------------------------------------------------------------
                da.DeleteCommand = new OleDbCommand("DELETE * FROM TB WHERE ID_test=@ID_test", con);//Вот здесь место ID_test если ставлю любой параметр, то все равно пишет тоже самое...
                da.DeleteCommand.CommandType = CommandType.Text;
                param = da.DeleteCommand.Parameters.Add(new OleDbParameter("@ID_test", OleDbType.Integer));
                param.SourceColumn = "ID_test";
                param.SourceVersion = DataRowVersion.Current;

                param = da.DeleteCommand.Parameters.Add(new OleDbParameter("@id", OleDbType.VarChar));
                param.SourceColumn = "id";
                param.SourceVersion = DataRowVersion.Current;

                param = da.DeleteCommand.Parameters.Add(new OleDbParameter("@test", OleDbType.VarChar));
                param.SourceColumn = "test";
                param.SourceVersion = DataRowVersion.Current;
                //-----------------------------------------------------------------------

                ds = new DataSet();
                da.Fill(ds, "TB");
            }
            catch (OleDbException ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally { con.Close(); }

            dataGridView1.DataSource = ds.Tables[0].DefaultView;
        }

        private void DeleteButton_Click(object sender, EventArgs e)
        {
            DataView dataView = new DataView(ds.Tables["TB"]);
            foreach (DataGridViewRow r in dataGridView1.SelectedRows)
            {
                DataRow sRow = dataView[r.Index].Row;
                sRow.Delete();
//--------  удали   это -----------------------------------------------------------------------------
                //da.DeleteCommand.ExecuteNonQuery();
               // sRow.AcceptChanges(); //По идее удаление должно подтвердиться
//------------------------------------------------------------------------------------------------------
            }
            da.Update(ds, "TB");   
        }

    }



--------------------
Всё  в  порядке   -   спасибо  зарядке  !
PM MAIL   Вверх
Doss
Дата 22.6.2008, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 5.10.2007

Репутация: нет
Всего: нет



Ща  гляну....спасибо, но База в адапторе  имеет название,  разве так нельзя?

Добавлено через 8 минут и 10 секунд
Magnifico, очень благодарен за помощь, невнимательность губит...
 smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0447 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.