Проблема с update бд Access

 
0
 
.NET
ava
Innos | 08.01.2013, 15:49
Добрый день.
перепала мне разовая малюсенькая задача - создать программку, которая будет Acces'овскую базу крутить. Делала все по книжке - подключила базу с помощью мастера, положила на форму датагридвью, дальше пошла конфигурировать DataAdapter  с помощью мастера -  метод update не создается автоматически! Первичный ключ в базе есть, таблица одна, select  возвращает колонку с ключом, а update так и не создается программно. Пробовала писать update вручную - не записываются изменения. Что делать дальше - не представляю, помогите пожалуйста!  smile  Проект прикладываю, базу тоже 
Ответы (7)
ava
Innos | 08.01.2013, 17:32 #
И почему доступно только "Use SQL statement" в Tableadapter Configuration?
ava
Innos | 14.01.2013, 13:24 #
Написала заново запрос для update - конструктор запросов выдал ошибку - но при запуске программы запрос отработал. зато правильные запросы с точки зрения конструктора делали черти что  или вообще не делает и вылетает. как-то странно  smile 
но всеже интересно почему методы не сгенерировались автоматически? ведь минимальные условия были соблюдены 
ava
Экскалупатор | 15.01.2013, 02:13 #
Цитата (Innos @  8.1.2013,  13:49 findReferencedText)
Пробовала писать update вручную - не записываются изменения. 

что значит "не записываются"? во время работы падает приложение? или после внесения изменений и перезапуска приложения (из-под студии) изменения откатываются?
ava
Innos | 15.01.2013, 16:04 #
Цитата (Экскалупатор @ 15.1.2013,  02:13)
Цитата (Innos @  8.1.2013,  13:49 \\"findReferencedText\\")
Пробовала писать update вручную - не записываются изменения. 


что значит "не записываются"? во время работы падает приложение? или после внесения изменений и перезапуска приложения (из-под студии) изменения откатываются?

вообще ничего не происходит при вызове updateQuery - я прописывала его как запрос к бд. родного update - не было. сейчас написала update там где надо и почти как мне надо. Но знаний/умений не хватает переписать чтобы было удобно оптимально и красиво.  smile 
у меня сейчас так:

update card
set
[email protected],
<список колонок из 18 штук>
where
cardnumber = @cardnumber

и каждый раз при обновлении хотя бы одной колонки мне приходится указывать значения во всех колонках! Это напрягает.
можно ли как нибудь так:

update card
set
@[email protected]
where
cardnumber = @cardnumber


где передавать параметром колонку, ну и значение. Вот только не разобралась что в параметр колонки передавать  smile 
ava
Экскалупатор | 15.01.2013, 23:26 #
хм, попрбовал только что. создал датасоурс приконектил его к базе аксеса, тупо перетащил из него таблицу на форму, студия мне автоматически сгенерировала все методы, даже не заикнулась нигде.
апдейтит, инсертит, удаляет. все ОК.
в следствии эксперимента выявил что оно не генерит апдейт если не может распознать первичный ключ в таблице. проверь. если нету то добавь. должно все заработать.

если не заработает(хотя должно) то дальше есть два варанта: писать совй SQL скрипт для обновления датасета, либо вообще использовать свою модель данных и свои скрипты для работы с базой данных. а что бы все это дело не расползалось по всей программе, нужно обращения к базе локализовать на одном слое, и из всей проги ходить через этот слой. тогда как именно происходит апдейт будет знать только один метод, а не +100500 мест в проге. в метод передаешь класс, там он парситься, на основе него собирается скрипт, выполняется... профит.
ava
Innos | 16.01.2013, 08:02 #
есть у меня первичный ключ, он распознается, пробовала удалять потом вручную проставлять - и даже после этого ни чего не генерится. Что-то с базой видно не так. Она с парадокса переделана в акцесс.
А вот на счет создания своей модели данных и своих скриптов - ради интереса и собственного развития можно попробовать. но это уже после сдачи задачи, а то меня на куски разорвут если задержу прогу.  smile  
а вообще спасибо за совет!
ava
Экскалупатор | 16.01.2013, 12:09 #
Цитата (Innos @  16.1.2013,  07:02 findReferencedText)
пробовала удалять потом вручную проставлять 

что то я не совсем понял про что ты. ты вручную значения проставляешь? или ключи назначаешь?

попробуй создать пустую базу, с одной таблицей, с primaryKey, потом новый проект, и для этой базы сгенерить все что тебе надо. по идее должно заработать, а потом можно будет сравнить, что в твоей базе не так.
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить