Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 8
.NET 3.x

Работа с бд Access

08.05.2011, 15:52. Показов 3619. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день. У меня такая проблема. Написано приложение для работы с базой данных Access, приложение привязано только к одному файлу *.mdb. В нем две таблицы, в первой поля код, класс, иконка, описание; во второй - Код_изображения, наименование, изображение, код. Первая таблица соединена со второй по полю код, в первой он счетчик, во второй числовой. Таблицы закинуты в два datagridview на форме. Когда во время работы программы пытаюсь сохранить изменения выдает ошибку:
"Невозможно добавление или изменение записи. Для обеспечения целостности данных необходимо наличие связной записи в таблице "Таблица 1"." Не знаю в чем проблема, в самом файле настраивал каскадное обновление/удаление записей, отношение один-ко-многим. Подскажите как быть. Вот код процедуры сохранения:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private void таблица1BindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Сохранить данные?", "Подтверждение", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                this.Validate();
                this.таблица1BindingSource.EndEdit();
                this.таблица2BindingSource.EndEdit();
                if (db1DataSet.HasChanges())
                    try
                    {
                        this.tableAdapterManager.UpdateAll(db1DataSet);
                        this.db1DataSet.AcceptChanges(); //обновление данных и применение изменений
                        MessageBox.Show("Сохранение прошло успешно", "Изменение записей", MessageBoxButtons.OK, MessageBoxIcon.Information);
 
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Неудачное обновление", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                else MessageBox.Show("Нет измененных записей!", "Изменение записей", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.05.2011, 15:52
Ответы с готовыми решениями:

Что лучше: работа с Access через ADO.NET или силами самого Access?
Считаю, что лучше работать с регулярно поступающим в Access объемом данных, разработав приложение Windows Forms C# и управляя процессом...

Возможна ли работа проги на Access без Access?
Не подскажете возможна ли работа проги на Access без установленного на машине Access? Т.е. самостоятельная работа проги через какой-нибудь...

Работа с БД Access без Access
Добрый день, форумчане! Уже больше месяца я заполняю БД собственного сочинения с необходимой информацией по поставщикам (адреса,...

18
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
08.05.2011, 18:15
А где код UpdateCommand (tableAdapterManager.Adapter)? Если пытаешься две связанные таблицы обновлять, то SQL ручками пишем, автогенерация сложных запросов не поддерживается дотнетом.
0
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 8
08.05.2011, 20:09  [ТС]
Не очень понял о чем идет речь. Процедуру писал как написано в справке, кое-что добавил от себя. Причем эта ошибка появилась недавно. Это у меня курсач на два семестра, в прошлом семестре все так работало нормально
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
08.05.2011, 20:50
Ткни в строчку в которой ошибка и дай исходники всех методов в этой строке.

Не по теме:

Есть большое отличие в том, когда ты делаешь что-то отличающееся или когда ты делаешь то, что отличается.

0
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 8
08.05.2011, 22:48  [ТС]
Ошибка в строчке this.tableAdapterManager.UpdateAll(db1Da taSet);
Пробовал апдейтить адаптеры каждой таблицы по-отдельности, та же ошибка
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
09.05.2011, 00:25
Уже лучше. Теперь метод .UpdateAll() в студию...
0
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 8
09.05.2011, 13:29  [ТС]
Метод UpdateAll
Сохраняет все данные из всех таблиц данных.Так написано в справке, и обычно он оиспользуется в примерах. В скобках указывается набор данных DataSet, который надо апдейтить
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
09.05.2011, 17:44
ррррр. Нет у DataAdapter метода UpdateAll (специально, на всякий случай, посмотрел в рефлекторе) есть только Update => UpdateAll определен в коде => код в студию.
0
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 8
09.05.2011, 22:22  [ТС]
А кто говорил о DataAdapter? Я же написал: tableAdapterManager! У него есть этот метод и нет метода Update()
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
10.05.2011, 09:00
Все, я пас. Вы не пробиваемы, класса tableAdapterManager в дотнете не существует! Я не знаю кто вам писал эту магическую справку в которой есть метод способный автоматически обновить две связанные таблицы (обычно для этого приходится писать UpdateCommand ручками). Выкладывайте проект целиком или разбирайтесь самостоятельно.
0
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 8
10.05.2011, 09:49  [ТС]
Хорошо, вот исходники. Я писал в 10 студии
Вложения
Тип файла: rar DataBase.rar (9.76 Мб, 43 просмотров)
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
10.05.2011, 20:03
гм. а вот у меня все работает... Ткани норм добавляются и сохраняются. Периодически вываливаются исключения, но не критические. Сама логика работы программы по прежнему в тумане. В папке проекта черт ногу сломит, там кода на 200кб, включая базу, на кой туда chm'ы 4-метровые вешать?
Вердит: для второкурсника слабо, ошибки заключаются в бездумном копипасте. Если сами не понимаете что пишете вам сюда.
0
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 8
10.05.2011, 20:12  [ТС]
Это еще не конечная версия, код естественно будет почищен и приведен в порядок, я сам понимаю что это не лучшая версия. chm это для справки, я его еще не переделывал, остался со старой версии. Но вот может ли эта ошибка с сохранением быть связана с разрядностью операционки? Просто если в студии я настраиваю рабочий конфиг х86, то выскакивает эта ошибка, а если включаю конфиг х64, то пишет при сохранении "поставщик Microsoft.Jet.Oledb.4.0 не зарегестрирован на этом компьютере". Вот я и не могу понять в чем дело. Я уже нашел кучу способов реализации этого сохранение и везде эта ошибка
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
10.05.2011, 20:49
Цитата Сообщение от Asfalot Посмотреть сообщение
Но вот может ли эта ошибка с сохранением быть связана с разрядностью операционки?
Нет.
Выход создавать прогу с нуля, там явный косяк с добавлением базы в проект.
0
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 8
10.05.2011, 20:58  [ТС]
Пробовал. Создал новый проект. Сделал набор данных, кинул датагриды, навигаторы к ним, просто поредактировать и посмотреть, как себя прога будет вести. Бесполезно. Та же фигня. Даже пробовал сам файл mdb новый делать, и заменять старый. Ниче не помогает.
0
10 / 10 / 1
Регистрация: 16.03.2011
Сообщений: 73
24.05.2011, 14:28
freeba
Все, я пас. Вы не пробиваемы, класса tableAdapterManager в дотнете не существует! Я не знаю кто вам писал эту магическую справку в которой есть метод способный автоматически обновить две связанные таблицы (обычно для этого приходится писать UpdateCommand ручками). Выкладывайте проект целиком или разбирайтесь самостоятельно.
Слушай а у тебя нет примера как в связные таблицы добавлять данные?
У меня DataGrid допустим и при добавлении из него записей в базу... в связную таблицудобовлялся индекс ключевого поля каждой записи которая вставляется из Дата Грида
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
24.05.2011, 20:16
Цитата Сообщение от cronbes Посмотреть сообщение
Слушай а у тебя нет примера как в связные таблицы добавлять данные?
нет.
У типизированного DataAdapter есть метод Insert присмотрись к нему.
0
10 / 10 / 1
Регистрация: 16.03.2011
Сообщений: 73
25.05.2011, 17:35
Цитата Сообщение от freeba Посмотреть сообщение
нет.
У типизированного DataAdapter есть метод Insert присмотрись к нему.
Ура, хоть ктото ответил... ) смотри вот в конструкторе ДатаСет таблицы и у каждой таблицы есть Адаптер, в нем стандартно у всех есть запрос Fill-он получается все записи показывает из таблицы
другие я запросы писал уже(добавлял в адаптерах) и использовал потом в программе.
Я вот сообразить не могу, если у меня На форме 2 элемента управления(Грид и текстБокс) то какой мне адаптер то использовать чтобы записи и текстбокса и DataGridView вставить одновременно? еще и связать в связной таблице.
Это мне получается нужно к 3 адаптерам писать сапрос и потом в коде по очереди добовлять записи?так получается?
0
Неадекват
 Аватар для freeba
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
25.05.2011, 21:46
Да. Одновременно добавлять запись в две таблицы нельзя (точнее можно, но не нужно), поэтому данные добавляются по принципу одна транзакция - одна таблица.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.05.2011, 21:46
Помогаю со студенческими работами здесь

Работа в Access
Всем привет. Увлекаюсь «Аксом». Делал 2 проекта для разных контор, причём во второй до сих пор работаю. Но не Програмистом, а манагером....

работа с БД в Access
Здравствуйте, уважаемые форумчане и программисты! Подскажите, пожалуйста, как создавать запрос на создание резервной копии таблицы в MS...

Работа с Access
Доброго времени суток, мне нужно сделать программу с вводом логина и пароля и с запоминанием их в бд access, и при надобности их выведения...

Работа с БД MS Access
Задание: 1. Создать БД с одной таблицей. 2. Подключиться к ней из консольного приложения. 3. Из приложения добавить, изменить, удалить...

Работа в Access
Хотелось бы что б, дорогие форумчане, не судили меня строго! я неопытный пользователь Access. Хотела бы разобраться для себя лично! Ведь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru