Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2017, 00:19   #1
Кодер2
Пользователь
 
Регистрация: 02.11.2016
Сообщений: 34
По умолчанию Ошибка при добавлении новой записи в БД. Visual studio 2015 C#

Программа для редактивания бд в Access на C# Visual Studio 2015.
Ошибка при добавлении новой записи в бд, помогите исправить. И также помогите переделать интерфейс как на скрине, буду очень благодарен.


Сам проект. ↓
lab_25.rar
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Labr_25
{
    public partial class Form1 : Form
    {
  
        public Form1()
        {  
            InitializeComponent();       
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "dB_EmployeeDataSet.Employee".
            this.employeeTableAdapter.Fill(this.dB_EmployeeDataSet.Employee);

            this.comboNameJob.Items.AddRange(new object[] {"не задан", "бухгалтер", "гл. бухгалтер", "оператор ЭВМ", "маркетолог", "программист","менеджер","нач. финансов"});

            dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                employeeBindingSource.EndEdit();
                employeeTableAdapter.Update(this.dB_EmployeeDataSet.Employee);
                MessageBox.Show("Данные сохранены", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                employeeBindingSource.ResetBindings(false);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            button3.Enabled = true;
            button4.Enabled = true;
            button1.Enabled = true;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                this.dB_EmployeeDataSet.Employee.AddEmployeeRow(this.dB_EmployeeDataSet.Employee.NewEmployeeRow());
                employeeBindingSource.MoveLast();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                employeeBindingSource.ResetBindings(false);
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            try
            {
                if (MessageBox.Show("Вы уверены что хотите удалить запись?", "Предупреждение!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    employeeBindingSource.RemoveCurrent();
            }
            catch { }
        }
    }
}

Последний раз редактировалось Кодер2; 27.03.2017 в 00:26.
Кодер2 вне форума Ответить с цитированием
Старый 27.03.2017, 03:22   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Я посмотрел... Программа очень сложная (не дорос я пока ещё до такого), и мне так и не удалось понять где ошибка... Где-то в строчке:
Код:
this.dB_EmployeeDataSet.Employee.AddEmployeeRow(this.dB_EmployeeDataSet.Employee.NewEmployeeRow());
Это начало, но нить анализа кода ушла куда-то далеко (в глубь программы)... и я её потерял... в общем я плюнул на это дело...

К счастью в программе предназначено две функции для добавления строчки в БД (сейчас используется первая: сформировать "EmployeeRow", не знаю что это такое, и поставить в функцию):

0 (3).jpg

Как изменить "EmployeeRow" я не знаю, поэтому предлагаю воспользоваться второй функцией.
Это выглядит так (одну - комментируем, а вторую пишем):


0 (4).jpg


Ну а, считать данные с полей на форме и подставить в функцию тебе не должно быть сложно (по аналогии, как я сделал для даты):


0 (5).jpg


(сейчас там, кроме даты, данные-заглушки)...
Ну ты сначала сделай с данными-заглушками, убедись, что всё ОК, и тогда переходи к считыванию данных с полей на ФОРМЕ.

p.s.1: ты же знаешь, что БД должна быть на диске "D".
p.s.2: программа работает так: Добавление на ФОРМУ, а когда пользователь нажимает "СОХРАНИТЬ" - сохраняет в файл. Проверки на корректность данных нет.

0 (6).jpg

Последний раз редактировалось ura_111; 27.03.2017 в 04:11.
ura_111 вне форума Ответить с цитированием
Старый 27.03.2017, 04:19   #3
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Что насчёт изменения; найди и попробуй удалить лишнее:

0 (7).jpg


и вообще, поиграйся с свойствами таблицы...


Ну во, приближено, что должно получится:


0 (8).jpg

Последний раз редактировалось ura_111; 27.03.2017 в 04:23.
ura_111 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка visual studio 2015 Дмитрий1684 Visual C++ 2 16.07.2016 19:09
Получить id(ключ) при добавлении новой записи imfrozen Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 0 12.06.2016 11:00
Случайный Access Violation при добавлении новой записи alm4 Общие вопросы Delphi 3 16.07.2012 10:23
при добавлении новой записи в dbgrideh автоматическое отмечивание галочкой scroyler БД в Delphi 2 23.02.2012 12:27
при добавлении новой записи через форму подставлолось значение из другой таблицы Baxxter Microsoft Office Access 1 07.01.2009 22:23