Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/33: Рейтинг темы: голосов - 33, средняя оценка - 4.94
3 / 3 / 0
Регистрация: 27.11.2010
Сообщений: 54

Как создать внешний ключ в таблице?

15.04.2011, 15:04. Показов 7048. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть готовая таблица на основе СУБД Paradox 7, созданная через Database Desktop.
Помогите пожалуйста: как создать в этой таблице поле с внешним ключом?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.04.2011, 15:04
Ответы с готовыми решениями:

Первичный ключ заполнен в одной таблице норм, он же в другой таблице внешний NULL
Всем доброго времени суток! Проблема следующая: Использую "SQL server management studio 2012", есть бекап базы данных с которой...

Создание локальной БД: как создать внешний ключ
Здравствуйте. Решил создать БД, нужно, чтобы работало на любом комьютере, в т.ч. без интернета, поэтому нужно создать локальную БД. Все...

Как создать внешний ключ для таблицы?
Скажу сразу, эта тема есть в разделе php и базы данных, но там никто не отвечает, может тут знают:) В общем вопрос следующий: как создать...

37
3 / 3 / 0
Регистрация: 27.11.2010
Сообщений: 54
16.04.2011, 00:17  [ТС]
Студворк — интернет-сервис помощи студентам
new_in_net, спасибо конечер, но таблиц много, да... Точнее лукапов в таблице у меня много и каждый берётся из отдельной таблицы...оххх, а с моей формой неужели ничего сделать нельзя?
Это ж вообще принцип другой - неужели мне все 9 таблиц заново переделывать =__=
И столько прописывать... Охх...
0
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
16.04.2011, 00:24
Цитата Сообщение от Lacrimossa Посмотреть сообщение
new_in_net, спасибо конечер, но таблиц много, да... Точнее лукапов в таблице у меня много и каждый берётся из отдельной таблицы...оххх, а с моей формой неужели ничего сделать нельзя?
Это ж вообще принцип другой - неужели мне все 9 таблиц заново переделывать =__=
И столько прописывать... Охх...
почему же? если принцип lookup один и тот же, то можно вызов второй формы модифицировать на вызов с параметром какую таблицу показывать.
Сейчас сделаю пример...
1
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
16.04.2011, 00:40
Цитата Сообщение от new_in_net Посмотреть сообщение
почему же? если принцип lookup один и тот же, то можно вызов второй формы модифицировать на вызов с параметром какую таблицу показывать.
Сейчас сделаю пример...
Пожалуйста.
В примере - 3 lookup поля, 3 таблицы, но всего одна форма для подбора разных значений (а также редактирования)
Вложения
Тип файла: zip ComboBoxDemo.zip (5.3 Кб, 11 просмотров)
1
3 / 3 / 0
Регистрация: 27.11.2010
Сообщений: 54
16.04.2011, 00:46  [ТС]
new_in_net, о, большое спасибо)))
Пожалуй, воспользуюсь вашим методом.
Только если можно, у меня ещё пара вопросов есть:

1. Что это за компонент - cdsPod. И какие его свойства надо менять? Как он связывается с остальными компонентами?
2. Как сделать так, чтобы изменения в 1-й форме тоже сохранялись?
Т.е. все эти выбранные варианты выпадающих полей...?
0
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
16.04.2011, 00:54
Цитата Сообщение от Lacrimossa Посмотреть сообщение
new_in_net, о, большое спасибо)))
Пожалуй, воспользуюсь вашим методом.
Только если можно, у меня ещё пара вопросов есть:

1. Что это за компонент - cdsPod. И какие его свойства надо менять? Как он связывается с остальными компонентами?
2. Как сделать так, чтобы изменения в 1-й форме тоже сохранялись?
Т.е. все эти выбранные варианты выпадающих полей...?
1. cdsPod & cdsGlav - это TClientDataSet, я его использовал за отсутствием ваших данных, для более наглядной демонстрации. Вам, для ваших целей, нужно все эти компоненты заменить на TTable либо TQuery
2. В конце процедуры Lookup прямо после присваивания значения полю сделайте Post (сохранить)
1
3 / 3 / 0
Регистрация: 27.11.2010
Сообщений: 54
16.04.2011, 12:55  [ТС]
new_in_net, всё понятно, премного вам благодарна за помощь!

Завтра попробую переделать всё под свою базу, если вдруг будут проблемы, то ещё отпишусь тут обязательно)

Добавлено через 11 часов 33 минуты
new_in_net, вот, попробовала переделать по вашей инструкции под свою базу с Query.
Сделала следующие изменения в коде:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm1.DBGrid1EditButtonClick(Sender: TObject);
var
  EditField: string;
begin
  EditField := DBGrid1.Fields[DBGrid1.SelectedIndex].FieldName;
  if SameText(EditField, 'Темп. наружного воздуха') then begin
    if Form2.ShowModal <> mrOk then
      exit;
    Form1.Query1.Edit;
    Form1.Query1.FieldByName(EditField).AsString := Form2.Query1.FieldByName('Темп. наружного воздуха').AsString;
  end;
 
  if SameText(EditField, 'Удельный V теплосети') then begin
    if Form3.ShowModal <> mrOk then
      exit;
    Form1.Query1.Edit;
    Form1.Query1.FieldByName(EditField).AsString := Form3.Query1.FieldByName('Удельный объём теплосети').AsString;
  end;
 
end;
Ошибок нет, но и списка выбора, такого как у вас тоже нет ни в одном из полей.
Подскажите пожалуйста, в чём может быть проблема?

Добавлено через 10 минут
И да, ещё кое что: у меня почему-то не сохраняется свойство ButtonStyle=Ellipsis. Изменяю сохраняю, но если закрываю проект и открываю его заново, то ButtonStyle снова стоит в положении cbsAuto.
0
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
16.04.2011, 16:47
Вспомогательную таблицу точно открываете и там что-то есть?
И еще, а на второй форме у грида и навигатора свойство датасет куда смотрит?
Кстати вы же хотели Post дописать - я его в коде не вижу.

И да, ещё кое что: у меня почему-то не сохраняется свойство ButtonStyle=Ellipsis. Изменяю сохраняю, но если закрываю проект и открываю его заново, то ButtonStyle снова стоит в положении cbsAuto.
странно... а другие свойства в инспекторе меняете - сохраняет?
1
3 / 3 / 0
Регистрация: 27.11.2010
Сообщений: 54
16.04.2011, 16:58  [ТС]
Вспомогательную таблицу точно открываете и там что-то есть?
Да, с этим всё нормально.

И еще, а на второй форме у грида и навигатора свойство датасет куда смотрит?
На Query1 естественно.

Кстати вы же хотели Post дописать - я его в коде не вижу.
Он там уже не нужен. Всё и так сохраняется.

странно... а другие свойства в инспекторе меняете - сохраняет?
Нууу, до этого всё было нормально.

Так... Может для пущей ясности мне лучше свою таблицу прикрепить? =__= Она страшненькая и огромная конечно... Но может хотя бы так будет что-то яснее для вас. пол дня уже сижу и НЕ ВИЖУ, и не могу понять, почему список не работает...

Добавлено через 15 секунд
Вспомогательную таблицу точно открываете и там что-то есть?
Да, с этим всё нормально.

И еще, а на второй форме у грида и навигатора свойство датасет куда смотрит?
На Query1 естественно.

Кстати вы же хотели Post дописать - я его в коде не вижу.
Он там уже не нужен. Всё и так сохраняется.

странно... а другие свойства в инспекторе меняете - сохраняет?
Нууу, до этого всё было нормально.

Так... Может для пущей ясности мне лучше свою таблицу прикрепить? =__= Она страшненькая и огромная конечно... Но может хотя бы так будет что-то яснее для вас. пол дня уже сижу и НЕ ВИЖУ, и не могу понять, почему список не работает...
0
3 / 3 / 0
Регистрация: 27.11.2010
Сообщений: 54
16.04.2011, 17:05  [ТС]
Вот...

Всего в ней должно быть 7 таких полей с выпадающим списком.
Я пока пыталась прописать первые два: Темп. наружного воздуха и Удельный V теплосети. Но вот безрезультатно пока что...
Вложения
Тип файла: rar Rabota.rar (381.0 Кб, 6 просмотров)
0
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
17.04.2011, 16:28
Цитата Сообщение от Lacrimossa Посмотреть сообщение
Вот...

Всего в ней должно быть 7 таких полей с выпадающим списком.
Я пока пыталась прописать первые два: Темп. наружного воздуха и Удельный V теплосети. Но вот безрезультатно пока что...
в понедельник с работы посмотрю...
1
3 / 3 / 0
Регистрация: 27.11.2010
Сообщений: 54
17.04.2011, 16:33  [ТС]
в понедельник с работы посмотрю...
Хорошо, большое спасибо, буду ждать. А то уже всё что могла - обыскала на предмет, в чём же может быть дело.
Попробовала сделать заново на чистом маленьком примере всё - то же самое, ошибок нет, но и кнопочка в поле тоже не появляется.

Не хочет оно с Query работать. =_=
0
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
18.04.2011, 18:44
Цитата Сообщение от Lacrimossa Посмотреть сообщение
Хорошо, большое спасибо, буду ждать. А то уже всё что могла - обыскала на предмет, в чём же может быть дело.
Попробовала сделать заново на чистом маленьком примере всё - то же самое, ошибок нет, но и кнопочка в поле тоже не появляется.

Не хочет оно с Query работать. =_=
Во первых, у меня ничего не открывает - русский текст в моем Делфи не воспринимается в названиях переменных и т.д.
А во вторых, у вас все таблицы пустые... может поэтому не видно данных?

Даже не знаю что предложить...
Ну вот например выставить стиль кнопки столбца можно run-time вот так: (для второго столбца)
DBGrid1.Columns[1].ButtonStyle := cbsEllipsis

Не по теме:

Ну зачем названия компонент и полей на русском делать?? Весь мир называет это на английском, зачем же заведомо ограничивать свои программы Россией, а точнее той частью которая использует русифицированный язык?

1
3 / 3 / 0
Регистрация: 27.11.2010
Сообщений: 54
18.04.2011, 18:57  [ТС]
А во вторых, у вас все таблицы пустые... может поэтому не видно данных?
Как понять, пустые? В каждой из вспомогательных таблиц введено по 3-4 значения, специально, чтобы пустоты этой не было. В той работе которую я вам скинула - всё нормально в этом плане. Пуста только главная таблица, которую надо заполнять, и в которой, собственно и нужны эти списки выбора. Ну и ещё последняя - она пока вообще не задействована нигде - там результаты будут потом.

Даже не знаю что предложить...
Ну вот например выставить стиль кнопки столбца можно run-time вот так: (для второго столбца)
DBGrid1.Columns[1].ButtonStyle := cbsEllipsis
Хорошо, спасибо, сейчас попробую.

Не по теме:
Ну зачем названия компонент и полей на русском делать?? Весь мир называет это на английском, зачем же заведомо ограничивать свои программы Россией, а точнее той частью которая использует русифицированный язык?
Я разрабатываю программу узкого функционала специально только для одного местного предприятия и им нужен преимущественно русскоязычный интерфейс. Врят ли ещё где-то за рубежом и даже в России на каком-то предприятии это программа будет нужна.

Зы: эта моя дипломная работа.

Добавлено через 5 минут
new_in_net, уррраааа!!!!!!
Спасибо вам огромное!!!!!!!!!!!!! Работает!
Прописала в программе нужный мне 8-й столбец! Всё работает, открывается нужная таблица и вариант выбирается!
Премного вам благодарна, вы мне очень помогли!
А то 2 недели было убито на решение проблемы со списком выбора! Я вам безмерно благодарна!!!
Пойду остальные столбцы сделаю и дальше буду писать.
0
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
18.04.2011, 19:28
Цитата Сообщение от Lacrimossa Посмотреть сообщение
Как понять, пустые? В каждой из вспомогательных таблиц введено по 3-4 значения, специально, чтобы пустоты этой не было. В той работе которую я вам скинула - всё нормально в этом плане. Пуста только главная таблица, которую надо заполнять, и в которой, собственно и нужны эти списки выбора. Ну и ещё последняя - она пока вообще не задействована нигде - там результаты будут потом.
странно, но у меня действительно они все - пустые... может опять глюки с русскими столбцами??

Цитата Сообщение от Lacrimossa Посмотреть сообщение
Хорошо, спасибо, сейчас попробую.
Я разрабатываю программу узкого функционала специально только для одного местного предприятия и им нужен преимущественно русскоязычный интерфейс. Врят ли ещё где-то за рубежом и даже в России на каком-то предприятии это программа будет нужна.
Я понимаю, тем не менее пользователь видит только интерфейс, а таблицы, названия компонент - только программист, а ему должно быть важнa совместимость, безглючность, да и возможнось получения помощи не только от россиян

Цитата Сообщение от Lacrimossa Посмотреть сообщение
Зы: эта моя дипломная работа.

Добавлено через 5 минут
new_in_net, уррраааа!!!!!!
Спасибо вам огромное!!!!!!!!!!!!! Работает!
Прописала в программе нужный мне 8-й столбец! Всё работает, открывается нужная таблица и вариант выбирается!
Премного вам благодарна, вы мне очень помогли!
А то 2 недели было убито на решение проблемы со списком выбора! Я вам безмерно благодарна!!!
Пойду остальные столбцы сделаю и дальше буду писать.
Отлично, я очень рад!
Удачи вам!
1
3 / 3 / 0
Регистрация: 27.11.2010
Сообщений: 54
18.04.2011, 19:35  [ТС]
странно, но у меня действительно они все - пустые... может опять глюки с русскими столбцами??
Возможно. Я сейчас скачала тот вариант, который вам прикрепляла здесь, там всё есть. Так что к сожалению (или к счастью?) ваш комп русский язык не переваривает =__=

Я понимаю, тем не менее пользователь видит только интерфейс, а таблицы, названия компонент - только программист, а ему должно быть важнa совместимость, безглючность, да и возможность получения помощи не только от россиян
Ну я и сама как бы не ярый знаток английского, кроме того с таблицами всё же никак - ибо столбцы в гриде автоматически называются так же как они были созданы в Датабэйсе изначально, с этим ничего не могу поделать. А названия самих таблиц - все латиницей, тут ОК.

Отлично, я очень рад!
Удачи вам!
А я то как рада!
Большое спасибо!

Хотя я скорее всего не раз ещё отпишусь на форуме, но уже по другим вопросам
0
283 / 262 / 32
Регистрация: 11.11.2009
Сообщений: 605
18.04.2011, 19:45
Цитата Сообщение от Lacrimossa Посмотреть сообщение
Ну я и сама как бы не ярый знаток английского, кроме того с таблицами всё же никак - ибо столбцы в гриде автоматически называются так же как они были созданы в Датабэйсе изначально, с этим ничего не могу поделать. А названия самих таблиц - все латиницей, тут ОК.
автоматически - это единственное преимущество. Причем сомнительное, если писать серьезную программу
У каждого столбцы можно прописать DisplayLabel с названием которое вы хотите чтоб появлялось автоматически.
Поверьте что с русскими столбцами и названиями можно нарваться на неожиданные глюки там, где их меньше всего ожидаешь - проблемы трансляции.
Но может в вашем случае это оправдано, я не знаю. В любом случае просто имейте ввиду при новых разработках
1
3 / 3 / 0
Регистрация: 27.11.2010
Сообщений: 54
18.04.2011, 20:03  [ТС]
автоматически - это единственное преимущество. Причем сомнительное, если писать серьезную программу
Ну... Серьёзные программы с БД на Парадокс7 не пишутся Об этом я в курсе уже. Да и Делфи - язык уже отмирающий, сейчас у нас ООП в моде, как ни крути

Просто за 5 лет обучения в нашем родном ВУЗ-е, ничего, кроме Delphi и СУБД Paradox7 нам не давали как следует, вот и диплом приходится на том писать, с чем хоть немного работала и имею представление.

1С я сразу же отмела для себя, ибо язык сам по себе унылый и слишком примитивный... Иным словом, - скучно.

Поверьте что с русскими столбцами и названиями можно нарваться на неожиданные глюки там, где их меньше всего ожидаешь - проблемы трансляции.
Ну да, всё конечно возможно... Хотя глюки бывают с чем-угодно.

В любом случае - спасибо за совет - учту на будущее
0
1 / 1 / 1
Регистрация: 21.04.2012
Сообщений: 57
04.05.2012, 06:43
Вопрос немного другой, но название темы мне подходит.

Одна из таблиц в БД является подчинённой для двух. Для обоих нужно создать внешний ключ в Database Desctop. Но он при попытке создать второй внешний ключ пишет "Field(s) linked to more than one master". Что мне с этим делать? Подскажите, пожалуйста.

И ещё - почему ему нужно, чтобы типы поля совпадали? А если у меня первичный ключ главной таблицы alpha, а подчинённой - short, как мне во второй создать внешний ключ?

Подскажите ) Спасибо заранее )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.05.2012, 06:43
Помогаю со студенческими работами здесь

Дублируются записи в таблице(таблица имеет внешний ключ)
При добавлении двух разных записей -эти записи дублируются. Вот видео ...

Выбрать все ид(внешний ключ) которых нет во второй таблице
Есть две таблицы. Таб_1: т1_1... 1 2 // !!! 3 Таб_2: т2_1, т1_1,... 1 1

Не удается создать внешний ключ
ALTER TABLE Krossirovka ADD FOREIGN KEY (ObjectFrom_ID) REFERENCES Object (Object_ID) не выполняется. Пишет &quot;The ALTER TABLE...

Создать внешний ключ из двух полей, одно с конкретным значением
Здравствуйте. Не силен в работе с БД. Скажите, Можно ли Создать внешний ключ из двух полей, чтобы одно было с конкретным значением? ...

Как добавить внешний ключ?
Здравствуйте. Есть гостевая. В БД есть 2 таблицы - зарегистрированные пользователи(табл.1 reg_users) + ихние сообщения(табл.2 message)....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru