Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 25.06.2019, 10:39   #1
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 320
Репутация: 21
По умолчанию Изменение данных в таблице mdb с помощью редактирования привязанного datagridview

Здравствуйте Уважаемые программисты!

На форме (c# winforms vs2010 net4.0) есть datagridview привязанный к файлу mdb (в файле mdb несколько таблиц, одна из которых имеет имя "Сотрудники": три колонки без поля id). Подскажите пожалуйста, как исправить код ниже, чтобы работало добавление новой строки, удаление и изменение строки в datagridview с сохранением изменений в файле mdb?
Заранее спасибо!
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Test
{
    public partial class Form1 : Form
    {
        DataSet ds = new DataSet();
        private BindingSource bindingSource1 = new BindingSource();

        private DataSet InitializeDataSet()
        {
            string connStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="c:\1.mdb";
            OleDbConnection conn = null;
            try
            {
                conn = new OleDbConnection(connStr);
                conn.Open();
                DataTable schemaTable;
                schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
                OleDbCommand cmd;
                OleDbDataReader dr;
                for (int i = 0; i < schemaTable.Rows.Count; i++)
                {
                    String strTable = schemaTable.Rows[i]["TABLE_NAME"].ToString();
                    cmd = new OleDbCommand("SELECT * FROM " + strTable, conn);
                    dr = cmd.ExecuteReader();
                    ds.Tables.Add(strTable);
                    OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM " + strTable, conn);
                    da.Fill(ds, strTable);
                }
            }
            catch (OleDbException ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                conn.Close();
            }
            return ds;
        }

        public Form1()
        {
            InitializeComponent();

            DataSet ds = InitializeDataSet();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            bindingSource1.DataSource = ds.Tables["СОТРУДНИКИ"];
            dGVpeoples.DataSource = bindingSource1;
        }

        private void btnSaveP_Click(object sender, EventArgs e)
        {
            try
            {
                bindingSource1.EndEdit();
                //da.Update(ds.Tables["СОТРУДНИКИ"]); ????
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
                bindingSource1.ResetBindings(false);
            }
        }

        private void btnNewP_Click(object sender, EventArgs e)
        {
            try
            {
                //ds.Tables["СОТРУДНИКИ"]   ??? добавить новую строку и перейти к ней для заполнения
                bindingSource1.MoveLast();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
                bindingSource1.ResetBindings(false);
            }
        }

        private void btnCancelP_Click(object sender, EventArgs e)
        {
            bindingSource1.ResetBindings(false);
        }

        private void btnEditP_Click(object sender, EventArgs e)
        {
            //???
        }

        private void btnDelP_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Вы хотите удалить эту строку?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                bindingSource1.RemoveCurrent();
        }

    }
}
ольгаг вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение данных в БД MySQL по редактированию ячейки в DataGridView d0x C# (си шарп) 1 06.02.2014 11:52
Форма для ввода, поиска и редактирования данных в таблице exce ac1-caesar Microsoft Office Excel 21 05.08.2013 15:57
Автоматическое изменение данных в таблице Lastsummer SQL, базы данных 2 23.04.2012 01:04
Изменение данных в таблице через форму. Blah Blah Помощь студентам 2 07.04.2010 16:04
Изменение данных в таблице access AD_min БД в Delphi 2 27.10.2008 13:23


17:41.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.