Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-1084863828
AndrewK
2004-05-18 11:03
2004.06.06
Данные хранимой процедуры обрезаются в DBGrid


14-1084932386
Думкин
2004-05-19 06:06
2004.06.06
С днем рождения! 19 мая


1-1084998259
greenrul
2004-05-20 00:24
2004.06.06
Удаление history+cache в Internet Explorer


14-1085123823
Layner
2004-05-21 11:17
2004.06.06
Кто что может сказать по огнетушителям?


1-1085634925
an-na2002
2004-05-27 09:15
2004.06.06
Как сделать невидимым или неактивным TEdit?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский