Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с БД [D7, MS Access]


Sword-Fish ©   (2002-12-26 12:41:00) 

Добрый день !!!
У меня очередной вопрос...
Я так и не понял !!!
У меня есть база на MS Access в ней две таблицы "Рейсы" и "Цены"
Я не могу поставить связь между этими таблицами.
Я ставлю связи прямо в Access !!!
Ставлю связь и каскадное обновление и удаление, а он пишет различные ошибки. Что-то типа "У вас должно быть равное количество полей в гл. таблице..." и т.д.
Я не понимаю что делать...
На мой вопрос уже отвечали и один сказал, что он работает (так же как и я) с ADO и Access !!!
У него сделаны связи в таблицах в самом Access и через Delphi все отлично удаляеться!!!
Хотелось бы подробнее !!!
Помогите пожалуйста !!!

Таблица "Рейсы":
Code - счетчик (ключевое поле)
Name - текстовое <<название рейса>> !!!

Таблица "Цены":
Code - счетчик (ключевое поле)
Name - текстовое <<название рейса, для того чтобы по удалению записи из табл. "Рейсы" удалялись записи с таким же названием рейса из таблицы "Цены" >> !!!
Category - текстовое
Price - денежное

Нужна помощь.........
Объясните поподробнее..... (пожалуйста)


Sword-Fish   (2002-12-29 18:42:00) [1]

Спасибо !!!
Я понял...


Валерий   (2002-12-29 18:19:00) [2]

Если Acces пишет ошибки при создании связи, значит что-то в Вашей базе действиельно не так. Что-то с целостностью не то и т.п. И вообще мне не понятно, почему у вас связь идет по текстовоу полю. Почему в таблице "цены" не поставить ID рейса. И.т.п.Так что думаю, что дело не в Accesse, а в том, что в Вашей базе бардак, и он правильно делает, что не хочет объединять Ваши таблицы.


Val   (2002-12-27 11:47:00) [3]

>Sword-Fish © (26.12.02 23:34)
Да какие скрипты !!! etc.
поменьше эмоций уважаемый, я ведь не обязан вам помогать, не так ли?
Если в Access нельзя получить скрипты(в чем я отчего-то очень сомневаюсь) - я бы отошел от работы с такой СУБД - все таки нужно знать, как устроена/работает ваша база, а не просто мышкой по экрану двигать, без понятия о DDL/DML.
По теме вопроса: вам же ясно говорится, что у вас данные в таблицах нарушают ограничение, которое вы пытаетесь наложить(FK в данном случае), поэтому оно и не накладывается. Либо очистите таблицы и накладывайте ограничения, либо измените данные, дабы они удовлетворяли настраиваемому FK.


Sword-Fish   (2002-12-26 23:34:00) [4]

Да какие скрипты !!!
Я просто с помощью конструктора в Access построил две таблицы и все !!!
Все что мне нужно это как сделать в Access каскадное удаление...
Но удалять я буду не через Access а через Delphi !!!
А ошибки такие:
"Данные таблицы Цены нарушают условия целостности
Например, записи для сотрудника существуют в связанной но отсутсвуют в главной таблице
Измените данные чтобы главные записи существовали для всех связанных записей"


Val   (2002-12-26 19:22:00) [5]

тогда неверно спроектирована база, показывайте скрипты создания таблиц и приведите текст ошибок.


Sword-Fish   (2002-12-26 18:55:00) [6]

Да нет вы не поняли!!!
Да я знаю там можно поставить галочку каскадное удаление, но у меня пишутся разные ошибки !!!
Как мне прямо в Aceess"е создать связи и каскадное удаление!!!
А потом через Delphi просто удалил запись а по ней удалились все записи с таким-то кодом из другой таблицы.


Val   (2002-12-26 14:00:00) [7]

alter table Prices
add constraint fk_prices_name foreign key (Name)
references Flights (Name) on delete cascade
естественно, в таблице рейсов name должно иметь уникальное значение. Но лучше вместо Name держать в таблице цен FlightsCode, и соответственно построить внешний ключ.


Наверх

Титульная страница Поиск, карта сайта Написать письмо