Форум: "Базы";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
ВнизСвязи м/у таблмцами ("ручное" изменение значения ключа) Найти похожие ветки
← →
Oxer (2004-05-16 19:57) [0]Добрый день. Возникла у меня такая задачка.
Доп. есть 2 таблицы:
PodrTable (Подразделение)
******************************
Key - счетчик
Name - текстовое (название подразделения)
****************************************
SotrTable (Сотрудники)
*************************************
Key - счетчик
LinkKey - числовое (для связи с PodrTable (Key -> LinkKey))
SirName - текстовое (Фамилия)
Name - текстовое (Имя)
... и т.д.
***************************************
Нужно перевести сотрудника из одного подразделения в другое,
т.е. говоря проще поменять значение LinkKey
Делаю ч/з DBLookupCombobox:
/DataSourse:=SotrSourse;
/DataField:=LinkKey;
/ListSourse:=PodrSourse;
/ListField:=Name;
/KeyField:=Key;
причем свойства меняю в инспекторе объектов,
выводится ошибка "Circular datalinks are not allowed"
По моему он просто "не хочет" работать с ключевыми полями.
С уважением, Виталий.
← →
Oxer (2004-05-16 22:30) [1]Может есть какой - нибудь другой вариант изменения этого значения?!
← →
Mike Kouzmine © (2004-05-17 00:22) [2]А ты переведи текст ошибки и все станет ясно.
← →
Oxer (2004-05-17 00:51) [3]>Mike Kouzmine © (17.05.04 00:22) [2]
>А ты переведи текст ошибки и все станет ясно.
Перевел и что?! Тогда как мне изменить это значение??? -(
← →
sniknik © (2004-05-17 01:22) [4]циклические ссылки не позволяются... т.е. ты указываеш гдето на либо сам на себя либо "замкнул" цепочку. а этого нельзя делать, если бы не эта ошибка оно бы пошло по кругу делать связки, создавать обьекты... пока винда бы не "померла".
и кто у нас бил гейтс после этого? гад, однозначно, нельзя видетели, а если хочется? ;о)))
← →
Ihor Osov'yak © (2004-05-17 02:01) [5]хм.. А движок базы то какой? Если позволяет выполнять SQL запросы - напишите соотв. запрос на изменение. И не партесь с этими компонентами.
Если не позволяет - рассмотрите вопрос об изменении движка. Если и этого нельзя - сочувствую - придется присмотреться к [4]
← →
SnowMen (2004-05-17 02:25) [6]>Если позволяет выполнять SQL запросы - напишите соотв. запрос на изменение. И не партесь с этими компонентами.
Если не позволяет - рассмотрите вопрос об изменении движка. Если и этого нельзя - сочувствую - придется присмотреться к [4]
Нет времени что-то менять, а насчет SQL, то как мне узнать какое значение LinkKey нужно поставить
Пользователь, то сам должен указать подразделение куда переводить, а вместо подразделения, просто нужно как - то изменить LinkKey в SotrTable на значение соответствующее выбранному подразделению
← →
ЮЮ © (2004-05-17 02:37) [7]У тебя, наверняка,PodrSourse и SotrSourse связаны отношение Master-Detail. Поэтому надо создатб дополнительный NewPodrSource, чтобы использовать его в качестве ListSourse
[4] прав лишь отчасти, т.к. ни винда, ни Б.Г. здесь ни при чем. Просто при выборе нового значения из выпадающего списка прозводится позиционирование ListSourse.DataSet на эту запись. А ListSourse.DataSet является master-record для редактируемой записи. Т.е. произойдет переоткрытие Детайл-НД и "непроизвольный" Post редактируемой записи. Поэтому-то и запрещено использовать "Circular datalinks"
← →
Ihor Osov'yak © (2004-05-17 02:37) [8]2 SnowMen
Что и где менять - я прекрасно представляю.
Пользователь - пускай указывает, Вы в обработчике OnChange соотв. контрола конструируйте соотв. запрос и отправляйте на выполнение. Впрочем, я думаю, что соотв. компоненты + BDE сами это делают, только вы им немного помешали. Из за того, что немного не так поставили свойства. Как их нужно поставить правильно - из контекта не понятно.
Впрочем, существует очень маленькая вероятность, что база спроектирована неправильно. Для проверки этого предположения какой-то утилитой смените значения соотв. внешнего ключа и посмотрите, не возникнет ли ошибки (если делфи - клиент-серверная - SQL експлоер, если нет - дейтбейс десктоп, можно и третьи утилиты). Если ошибка повторится - дело в базе, проверте правила каскадного обновления и триггера (что то из перечисленого должно быть). Если нет - дело в вашем приложении - еще раз проверте соотв. свойства компонент, соотв. за работу с соотв. набором данных.
← →
ЮЮ © (2004-05-17 02:49) [9]> [7] надо создать дополнительный NewPodrSource
И другой DataSet, естественно.
← →
sniknik © (2004-05-17 08:15) [10]ЮЮ © (17.05.04 02:37) [7]
во втором абзатце [4] я неправ полностью, это шутка, сарказм.
а вот про циклическую ссылку, это очевидно, ошибка приведена, гдето она есть. ;)
← →
Oxer (2004-05-18 01:13) [11]>ЮЮ © (17.05.04 02:49) [9]
> И другой DataSet, естественно.
Что - то не совсем сообразил:
Нужно просто скопить Table и DataSourse так что-ли
PodrTable PodrSourse
PodrTable1 PodrSourse1, а cв-ва:
dbloockupCombobox поменять на такие
/DataSourse:=SotrSourse;
/DataField:=LinkKey;
/ListSourse:=PodrSourse1;
/ListField:=Name;
/KeyField:=Key;
и все пойдет
Не верю, сейчас посмотрю.
← →
Oxer (2004-05-18 01:23) [12]>ЮЮ © (17.05.04 02:37) [7]
>У тебя, наверняка,PodrSourse и SotrSourse связаны отношение >
>Master-Detail. Поэтому надо создатб дополнительный NewPodrSource, >чтобы использовать его в качестве ListSourse
Сделал так, как ты посоветовал, вроде заработало, пока не проверял, но и ошибок никаких не вылезло.
БОЛЬШООООЕ СПАСИБО!!!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.033 c