Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как записать dataSet в Access базу? / 21 сообщений из 21, страница 1 из 1
16.11.2012, 04:35
    #38040796
v skopin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
Привет всем!

Прошу прощение за тупой вопрос, но что только не делал, НИКАК не сохраняются изменения(((
(база старая 2000, OleDb)

Заранее благодарю ВС
...
Рейтинг: 0 / 0
16.11.2012, 07:26
    #38040835
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
А что и как Вы изменяете?
...
Рейтинг: 0 / 0
16.11.2012, 09:21
    #38040909
v skopin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
Cat2,
1. Очищаю таблицу.
2. Заполняю её.
в адаптере/датасете полностью таблица (не представление)
...
Рейтинг: 0 / 0
16.11.2012, 11:27
    #38041125
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
v skopin,

В отличии от DAO эксеса здесь датасет не имеет связи с исходной таблицей, а является ее копией

DataTable (ADO.NET)
...
Рейтинг: 0 / 0
16.11.2012, 15:49
    #38041722
v skopin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
Cat2,
и что делать?
...
Рейтинг: 0 / 0
16.11.2012, 16:16
    #38041776
v skopin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
как, пусть не датасетом, одну табличку стереть и записать? чёрт с ним, просто записать, стирать можно заказчика заставить
...
Рейтинг: 0 / 0
16.11.2012, 16:18
    #38041785
Местный король Делфей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
v skopinкак, пусть не датасетом, одну табличку стереть и записать? чёрт с ним, просто записать, стирать можно заказчика заставить
Д. Сеппа Программирование на MS ADO Net 2.0 или хотя бы msdn, там все есть
класс DataAdapter (если пишите поставщиконезависимый код) и/или его наследники.
...
Рейтинг: 0 / 0
16.11.2012, 16:26
    #38041816
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
v skopinCat2,
и что делать?
Для начала изучать доки.

Куча вариантов.
Две категории.

Если через TableAdapter.Fill(...), то разными способами вызывать TableAdapter.Update(...)

Если нет, например через LINQ или чтением через SQLDataRerader, то придется самому писать обработчик изменения записей.

В любом случае обработчик желательно запихать в событие изменения записи DataTable.

Заполняем таблицу
Код: c#
1.
myTableAdapter.Fill(myTable);




Создаем событие

Код: c#
1.
2.
myTableRow.RowChanged += myTableRowChanged;
myTableRow.RowDeleted += myTableRowChanged;



Обработчик события

Код: c#
1.
2.
3.
4.
void myTableRowChanged(object sender, myTableRowChanged e) 
{
                    myTableAdapter.Update(myTable);
}



При этом

myTableAdapter должен иметь все 4 команды: SelectCommand, UpdateCommand, DeleteCommand, InsertCommand
...
Рейтинг: 0 / 0
16.11.2012, 23:17
    #38042305
v skopin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
Cat2,

А где их брать, то эти адаптеры??? А лучше скажите, как обойти "Поставщик "Microsoft.ACE.OLEDB.12.0" не зарегистрирован на локальном компьютере." это не помогло мне , и попутно: теоретически помогло бы? (базу переделать в 2007)
мне до понедельника нужен результат..., простите, но у меня это крик какой-то...
...
Рейтинг: 0 / 0
17.11.2012, 00:05
    #38042314
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
v skopin,

Почему бы Вам для начала не попробовать поизучать язык?
Форум - место для ответов и обсуждений, а не бесплатный преподаватель.

Если ничего не понимаете - обратитесь в форум Работа. Там Вам за деньги все сделают.
...
Рейтинг: 0 / 0
17.11.2012, 11:10
    #38042441
v skopin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
Cat2,

я это всё понимаю, но и самм помогал,но сейчас такая ситуация, что готов и деньги платить...
...
Рейтинг: 0 / 0
17.11.2012, 12:05
    #38042459
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
Cat2v skopinCat2,
и что делать?
Для начала изучать доки.
+100500 :)
Cat2Создаем событие
Код: c#
1.
2.
myTableRow.RowChanged += myTableRowChanged;
myTableRow.RowDeleted += myTableRowChanged;

Обработчик события
Код: c#
1.
2.
3.
4.
void myTableRowChanged(object sender, myTableRowChanged e) 
{
                    myTableAdapter.Update(myTable);
}

Я сильно извиняюсь...
Но какой принципиальный смысл вызывать myTableAdapter.Update(myTable) на каждый чих изменения или удаления строки из таблицы?
Эта штука имеет смысл быть вызвана, когда весь блок обаботки данных DataTable уже закончен и эти изменения нужно зафиксировать в БД.
...
Рейтинг: 0 / 0
17.11.2012, 12:37
    #38042475
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
sphinx_mvЭта штука имеет смысл быть вызвана, когда весь блок обаботки данных DataTable уже закончен и эти изменения нужно зафиксировать в БД.
Все равно все изменения будут обрабатываться единичными update-delete-insert для каждой строки и выигрыша в производительности не получится.

В однопользовательской системе проблем не будет. Но в многопользовательской актуальная информация должна как можно быстрее попадать в базу, что бы и все другие ее могли получить.

Возьмем к примеру, Кадры.

Кадровик изменяет фамилии вышедших замуж и сменивших фамилию. Пока он не нажмет кнопку "сохранить изменения", эти изменения в Вашем случае не будут видны никому и они будут полуать инфу со старой фамилией. Это не очень критично для Кадров, но есть и более критичные базы.
...
Рейтинг: 0 / 0
17.11.2012, 17:21
    #38042607
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
Cat2sphinx_mvЭта штука имеет смысл быть вызвана, когда весь блок обаботки данных DataTable уже закончен и эти изменения нужно зафиксировать в БД.
Все равно все изменения будут обрабатываться единичными update-delete-insert для каждой строки и выигрыша в производительности не получится.
Не совсем так! :)
Точнее, ОЧЕНЬ не так...
В Вашем случае каждое изменение будет вызывать применение изменений в БД. Даже ошибочное. Даже многократное изменение одной и той же записи... И, возможно, даже отказ от всех выполненых изменений...
Соотвественно, количество атомарных операций по сохранению данных в базе может увеличиться в несколько раз - это однозначно отрицательно сказыватся на производительности.
Ну, а если учесть возможность в моем варианте обернуть группу одиночных insert-update-delete в единой транзакции - это только плюс к производительности.
Cat2В однопользовательской системе проблем не будет. Но в многопользовательской актуальная информация должна как можно быстрее попадать в базу, что бы и все другие ее могли получить.
Актуальная информация становится доступной в момент, когда она сохраняется в базе.
Другого варианта "актуализации" не существует - при любой схеме обработки. Хоть Вашей, что моей.
В Вашем случае, когда в БД фиксируются чуть ли не элементарные изменения полей в записи, "актуальной" может стать очень "неактуальная" информация. В результате другой пользоваль/процесс вполне могут подхватить "чужую" запись с неактуальной информацией - и мы получаем конфликт обновлений...
В-общем, в-целом и в-частности, для многопользовательской работы как раз схема с независимым сохранением отдельных записей таблицы не очень годится.
Cat2Возьмем к примеру, Кадры.

Кадровик изменяет фамилии вышедших замуж и сменивших фамилию. Пока он не нажмет кнопку "сохранить изменения", эти изменения в Вашем случае не будут видны никому и они будут полуать инфу со старой фамилией. Это не очень критично для Кадров, но есть и более критичные базы.Правильно!
Специально для фиксации изменений в БД существует очень большая кнопка "Save" или для отмены сохранения данных не менее большая кнопка "Cancel". И только нажатие на эти кнопки делает информацию правильной/достоверной или отменяет выполненные пользователем изменения!
И, кстати, кто сказал, что "элементарные" изменения могут быть ограничены только необходимостью сохранения только одной-единственной записи в одной-единственной таблице? "Мастер-деталь" уже не рулит? ;-)
...
Рейтинг: 0 / 0
18.11.2012, 13:21
    #38043073
v skopin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
а я сломался((( данные в текстовик загнал, заказчику объяснил, что Аксес это УГ, с 1000000 записей работает плохо (что, кстати, не далеко от истины, тк с текстовиком работает быстрее)
...
Рейтинг: 0 / 0
20.11.2012, 15:39
    #38045522
v skopin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
АLinq всё прикурил)))
...
Рейтинг: 0 / 0
20.11.2012, 16:57
    #38045711
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
sphinx_mvПравильно!
Специально для фиксации изменений в БД существует очень большая кнопка "Save" или для отмены сохранения данных не менее большая кнопка "Cancel". И только нажатие на эти кнопки делает информацию правильной/достоверной или отменяет выполненные пользователем изменения!
Это справедливо для данных, которые должны попасть в базу в единой транзакции.
...
Рейтинг: 0 / 0
20.11.2012, 17:18
    #38045749
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
Cat2sphinx_mvПравильно!
Специально для фиксации изменений в БД существует очень большая кнопка "Save" или для отмены сохранения данных не менее большая кнопка "Cancel". И только нажатие на эти кнопки делает информацию правильной/достоверной или отменяет выполненные пользователем изменения!
Это справедливо для данных, которые должны попасть в базу в единой транзакции.С учетом того, что любое изменение данных должно выполняться в рамках транзакции, то, соответственно, это касается ЛЮБЫХ изменений данных.
И мы ВСЕГДА должны помнить главное правило при многопользовательской работе с данными: транзакции должны быть как можно короче. Не так ли?
...
Рейтинг: 0 / 0
20.11.2012, 17:27
    #38045765
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
sphinx_mvСоотвественно, количество атомарных операций по сохранению данных в базе может увеличиться в несколько раз - это однозначно отрицательно сказыватся на производительности.
Выбрось свою "производительность" на свалку, кому вчера про балк 13497124 мозги вправлял? Вот там действительно производительность. Если бы был сиквел повыше (>= 2008), можно было бы datatable сразу в хп скормить.
...
Рейтинг: 0 / 0
20.11.2012, 20:41
    #38045993
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
sphinx_mvCat2пропущено...

Это справедливо для данных, которые должны попасть в базу в единой транзакции.С учетом того, что любое изменение данных должно выполняться в рамках транзакции, то, соответственно, это касается ЛЮБЫХ изменений данных.
И мы ВСЕГДА должны помнить главное правило при многопользовательской работе с данными: транзакции должны быть как можно короче. Не так ли?
Совершенно верно. Однако если единичная транзакция затрагивает только одну строку в базе, то ее обновление должно производится в режиме реального времени, а не дожидатся нажатия кнопки Save.
Возьмем, например, всем известный Склад. Получатель выбирает позиции и эти данные должны быть сразу отмечены в базе, что бы никто другой не не смог набрать количество, большее, чем Остаток-Заказы.

Когда Получатель все выберет, то в единой транзакции уменьшаются остатки и аннулируется Заказ Получателя.
...
Рейтинг: 0 / 0
21.11.2012, 00:39
    #38046219
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как записать dataSet в Access базу?
Cat2sphinx_mvпропущено...
С учетом того, что любое изменение данных должно выполняться в рамках транзакции, то, соответственно, это касается ЛЮБЫХ изменений данных.
И мы ВСЕГДА должны помнить главное правило при многопользовательской работе с данными: транзакции должны быть как можно короче. Не так ли?
Совершенно верно. Однако если единичная транзакция затрагивает только одну строку в базе, то ее обновление должно производится в режиме реального времени, а не дожидатся нажатия кнопки Save.
Тут, наверное, необходимо исходить из нескольких посылов... IMHO...

Алгоритм сохранения должен быть единообразным как для единичной записи, так и для множества связаных записей - это проще и при проектировании/разработке, и для пользователей - им не надо помнить как в каждой из многих частей системы работает процесс сохранения данных...

Логически сохранение выполняется не для "записи" как таковой, а для некоторой "сущности", весь процесс сохранения данных которой должен быть выполнен внутри транзакции - даже если эта "сущность" физически состоит из одной записи.

Решение о необходимости сохранения или отмены изменений данных в БД все-таки должно приниматься человеком-оператором...
Cat2Возьмем, например, всем известный Склад. Получатель выбирает позиции и эти данные должны быть сразу отмечены в базе, что бы никто другой не не смог набрать количество, большее, чем Остаток-Заказы.
Это - спорный или, по крайней мере, очень неоднозначный вопрос...

Если мы хотим, чтобы соблюдалось выдвигаемое Вами требование, мы должны полностью заблокировать текущие остатки товара в момент начала формирования заказа. Это означает, что другие пользователи доступ к ним иметь не будут, пока первый пользователь не закончит вводить и сохранит заказ или вообще просто отменит заказ... Весьма не гуд...

К тому же по заказам вполне может быть указано товаров больше, чем есть в наличии на складе на "сейчас". На недостающий товар всего лишь планируется ближайшее пополнение склада, а заказчики, которым не хватило текущего остатка в самом худшем случае получают его чуть позже... Логистика, однако...

Выдать со склада "по документам" (а "по факту" это невозможно сделать) больше, чем есть в наличии - вот это да, как бы "низззя"... Но и делаться это уже может на основе, как минимум, предварительно подготовленных (на основе данных все тех же заказов) "болванок", которые вообще могут быть сформированы полностью автоматически "по-ордерно" в строгом соответствии с требованиями "коротких транзакций"...
Cat2Когда Получатель все выберет, то в единой транзакции уменьшаются остатки и аннулируется Заказ Получателя.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как записать dataSet в Access базу? / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]