Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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

Feniks (статус: Бакалавр), 29 января 2008, 11:59 [#1]:

Вы изложите всю задачу полностью. Какие у вас таблицы, что и где надо хранить, какую БД используете ? Возможно кто-то Вам и подскажеть верную структуру таблиц и БД. Судя из приведенного, БД у Вас Парадокс и таблицы составлены не верно.
RezchiK

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

RezchiK (статус: Посетитель), 29 января 2008, 12:47 [#3]:

При заполнении полей выдаёт ошибку:Project Rezba.exe raised exception class EDatabaseError whitn message 'Field 'IndNom' cannot be modified'.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:51
Выполнено за 0.03 сек.