![]() |
|
![]() ![]() ![]() |
|
NonStopAaa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 17.6.2009 Репутация: нет Всего: нет |
Значит маленькое описание: не ругайтесь на непродуманную реализацию, ибо курсовой проект и требования не мои)) тема инф. система футбольного сезона, так уж получилось
![]() Изначально БД исп. технологию ADO, состоящая из 5-6 таблиц с разными связями (1-1, 1-*, *-* и т.д.). Интересуют собственно ттолько 3 таблицы назовем их Clubs, Clubs_Matches и Matches. Соответственно каждому клубу из табл Clubs соответствуют к-либо записи из таблицы Matches, что фиксируется связующей Clubs_Matches (состоит из трех полей id_club, id_matcha, id_sv). В Clubs_Matches они добавляются методом AfterPost у набора данных Matches, то есть если мы добавляем матч, то в связующую добавляется две связи, т.к. два клуба. Собственно проблема: добавляется все отлично, но при редактировании записи в Matches (меняем клуб: там поле выбора) в связующей таблице запись не редактируется! необходимо чтобы она сама автоматически исправляла id_club на тот что мы поменяли. Было два варианта: 1 - добавить в таблицу Матчи два поля которые будут отвечать за айди связи, потом локейтом перемещаться на них и перезаписывать, но получается что в методе AfterPost табл Matches нам необходимо сохранить эту же таблицу после добавление айди связи => бесконечный цикл)) уже пробовала)
второй вариант: просто удалять старые поля и добавлять новые, даже при редактировании. находим также две записи локейтом, и удаляем, после чего добавляем новые как описано выше. Но не работает :( то есть то ли локейт не работает, старые записи не удаляются, только 2 новые добавляются :(((( Каким еще образоам можно заставить связующую таблицу автоматически редактироваться при изменении таблицы Матчи???? Помогите плз, завтра курсач сдавать :( Это сообщение отредактировал(а) Rrader - 17.6.2009, 18:31 |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 1 Всего: 58 |
Вообще ключевые поля не должны редактироваться. Если же это приходится делать, надо пройтись по всем таблицам и заменить старый индекс на новый.
|
|||
|
||||
NonStopAaa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 17.6.2009 Репутация: нет Всего: нет |
хм. редактируется не ключевое поле. редактируется содержимое связи. то есть а таблице Клубы_Матчи заменяется айди клуба на другой айди, а ключевое поле остается тем же. так вот этого сделать не получается.
|
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 1 Всего: 58 |
Стоп, глюкануло. Связи точно проставлены в таблицах?
Добавлено через 5 минут и 59 секунд Прикрепи саму БД на всякий случай, если она в Эксесе. |
|||
|
||||
NonStopAaa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 17.6.2009 Репутация: нет Всего: нет |
бд прикреплена через адо, сделана в аксесе. - связи все там проставлены, собственно бд генерировалась из ер-вина, так что связи там стопроцентно правильные.. собственно проблема в том что запись просто сохраняется в таблице связующей, что позволяет сделать динамический запрос для отображения данных. но не меняется запись при изменении данных которые она должна связывать.
|
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 1 Всего: 58 |
что значит ПРОСТО сохраняется? ErWin Erwin'ом, но еще раз советую проверить схему данных Access, только что проверил у себя БД - есть связи, все меняется. |
|||
|
||||
NonStopAaa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 17.6.2009 Репутация: нет Всего: нет |
проверила. связи стоят, целостность и каскадное обновление стоит.
![]() |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 1 Всего: 58 |
Прикрепи базу+проект здесь к посту, я посмотрю.
Это сообщение отредактировал(а) Keeper89 - 17.6.2009, 20:55 |
|||
|
||||
NonStopAaa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 17.6.2009 Репутация: нет Всего: нет |
он весит пять метров(( плюс для отображения таблиц нужен QuantumGrid. Если б меньше весил, я бы скинула
![]() |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 1 Всего: 58 |
Вообще странно...
попробуй так: при обновлении поля в главной таблице, меняй его во всех сводных. Простым запросом UPDATE можно. |
|||
|
||||
flomaster |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 28.12.2007 Где: СПб Репутация: нет Всего: нет |
Вы явно накосячили со структурой базы и со связями.
Даже хорошим инструментом можно по пальцу садануть. Архиватором пользоватья умеете? Ваш 5Мб-й мдб-шник в архиве превратится в 20кб. Сожмите и выкладывайте. С телепатами сегодня туго. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |