|
Вопрос # 1 294/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Вот ещё такой вопросец, никак нее могу догнать как делать связи с таблицами в Database Desktop. У меня две таблицы:
Glavn:
ID + *
Nom I
FIOZakaz A 30
Adress A 30
DataZakaz D
............
Image G
Adress:
ID + *
FIOZakaz A 30
Adress A 30
Как мне создать связи в десктопе, чтоб занесённые данные родительской таблицы Adress в поле с адресом, отображались в дочерней таблице Glavn??? И можно тоже самое сделать с изображением??? Потом как я понимаю надо будет прировнять эти поля в SQL в Query??? Есть мануал по БД в Delphi 3, но там к сожелению нет соответствующих картинок из раздела связей(((
 |
Вопрос задал: RezchiK (статус: Посетитель)
Вопрос отправлен: 26 января 2008, 17:10
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Feniks
Здравствуйте, RezchiK!
На сколько я понял у Вас БД Парадокс. Спешу Вас разочаровать, что Парадокс не поддерживает связь "один-ко-многим" каскадированием. Хотя это в Database Desktop и можно сделать в свойствах таблиц. Но на самом деле работать не будет. Поэтому прийдется самому ручками запросами выбирать, что вам надо. Для этого надо сначало корректно организовать структуру таблиц. Например, у вас есть Заказчик и его данные ФИО, Адрес и т.д.
Я бы сделал отдельные таблицы-справочники Адрес, Имена:
Address: - справочник всех адресов, и не только Заказщиков.
AddressID + *
AddressFull A 255
Тут можно конечно же расшифровать полный адрес на состовляющие и вынести во отдельным полям: индекс, улицы, дом, кв., телефон и т.д. (это вам видней).
Names: - справочник всех имен.
NamesID + *
FirstName A 50 - Имя
SecondName A 50 - Фамилия
MiddleName A 50 - Отчество
Zakaz: - Заказчик.
ZakazID + *
NamesID I - тут номер поля NamesID записи из табл. Names. Тип поля "цифра", не помню какой буквой обозначается.
AddressID I - то же самое, думаю сами догадались куда и зачем...
Ну и так далее... все по тому же принципу.
И уже в запросах будете делать "логическую привязку" или свойствами MasterSource.
И конечно же все изменения самому надо делать...
 |
Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 29 января 2008, 12:55
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 3; последнее сообщение — 29 января 2008, 12:47; участников в обсуждении: 2.
|
Feniks (статус: Бакалавр), 29 января 2008, 11:59 [#1]:
Вы изложите всю задачу полностью. Какие у вас таблицы, что и где надо хранить, какую БД используете ? Возможно кто-то Вам и подскажеть верную структуру таблиц и БД. Судя из приведенного, БД у Вас Парадокс и таблицы составлены не верно.
|
|
RezchiK (статус: Посетитель), 29 января 2008, 12:43 [#2]:
Вообщем у меня две таблицы. В одну(Glavn1) заносятся данные, часть которых нужно сделать, чтоб бралась из вторй таблицы(Adress). Таблицы парадоксовские, в датабайс десктоп
Таблицы:
Glavn1:
ID + *; Nom I; IndNom I; FIOZakaz A 35; Adress A 30; DataZak D; DataIzg D; Price $; NameIzd A 60; RazmIzd A 20; Material A 30; Pokr A 30; Image G.
Adress:
IndNom + *; FIOZakaz A 35; Adress A 30.
Вторичный индекс в таблице Glavn1 IndNom(Maintained, Case sensitive)
Связь:
Child fields:IndNom[I] из таблицы Glavn1, Parent's key:IndNom[+] из таблицы Adress
Update rule-Cascade, Strict referentail integrity отмечена...
В таблице Adress
MasterSourse:SourseGlavn1
MasnerFields:IndNom->IndNom
|
|
RezchiK (статус: Посетитель), 29 января 2008, 12:47 [#3]:
При заполнении полей выдаёт ошибку roject Rezba.exe raised exception class EDatabaseError whitn message 'Field 'IndNom' cannot be modified'.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|