![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
изменить все поля в таблице при изменении такихже полей в др. таб
Саша © (2002-04-27 10:37:00)Подскажите пожалуйста, как решит такую задачу:
Есть таблица в ней одно поле выбирается из другой таблицы
(справочник), как сделать так чтобы при изменении поля в справочнике изменялись все поля с этим значением, а при удалении из справочника, если есть такое значение в главной таблице, то выводить сообшени что удалить нельзя. Я не чего умнее пойска (locate или ченибудь в этом роде) и изменения предумать немогу. Помогите решить эту проблемку по умному. Заранее благодарен.
roottim (2002-04-28 16:18:00) [1]+
т.к реализацию триггеров сделать нельзя и по утверждению Desdechado © (28.04.02 15:36) ссылочную целостность не поддерживает -
их подобие можно реализовать на евенсы dataset-а
AfterPost BeforDelete
пример отбалды.. незнаю на чем все это пишется но пр так!
t1 гл t2 спр-к
q1 tquery
procedure TForm1.t2AfterPost(DataSet: TDataSet);
begin
q1.sql.text:="update t1 set idT2 = :p1 where idT2 = :p2";
q1.ParamByName("p1").Value := t2.FieldByName("id").NewValue;
q1.ParamByName("p2").Value := t2.FieldByName("id").OldValue;
q1.ExecSql;
end;
и на удаление в том же духе
сам не проверял... но идея такова!
Locate конечно использовать ненадо..все на уровне запросов
Desdechado (2002-04-28 15:36:00) [2]Для dBase ссылочная целостность реализуется именно таким ручным поиском :((
Johnmen (2002-04-27 11:16:00) [3]Если правильно понял, то :
1.связывание полей надо делать по ключевому полю в справочнике и ссылочному в основной табл., тогда будет <...при изменении поля в справочнике изменялись все поля с этим значением...>
2.при удалении из справочника проверять, имеются ли ссылки на удаляемую запись в осн.табл., используя соотв.запрос
Саша (2002-04-27 11:02:00) [4]Dbase
Johnmen (2002-04-27 10:41:00) [5]Не приведен тип БД.