Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Редактирование БД [D7, 95/98, 2000, XP]


Mb ©   (2006-10-18 18:51:00) 

Краткий смысл БД - учет проб масла вертолетного парка.
Формат - Paradox.

Главная таблица Vs:
VsID - уникальный идентификатор вертолета, первичный ключ.
VsNum - номер вертолета.

имеет связь один ко многим с
отдельной таблицей Move:

MoveID - уникальный идентификатор, первичный ключ.
MVs - Код номера борта из поля VsNum из таблицы Vs
MDvL - Код номера левого двигателя из поля DvID из таблицы Dv
Mproba1 - Код номера пробы из поля ProbaId из таблицы Proba
MDvP - Код номера правого двигателя из поля DvID из таблицы Dv
Mproba2 - Код номера пробы из поля ProbaId из таблицы Proba
MRed - Код номера редуктора из поля RedID из таблицы Reductor
Mproba3 - Код номера пробы из поля ProbaId из таблицы Proba

таблица Proba:
ProbaID - уникальный идентификатор, первичный ключ.
PSodFe - Содержание железа
PDate - дата

таблица Dv:
DvID - уникальный идентификатор, первичный ключ.
DvNum - Номер двигателя

таблица Reductor:
RedID - уникальный идентификатор, первичный ключ.
RedNum - Номер редуктора

DataBase, два DataSource (1 для VS и 2 для Move) и 5 TTable
(Vs, Move, Red, Proba, Dv) расположены в DataModule1.

На главной форме расположены 3 DBGrid:
На 1 - набор бортовых номеров вертолетов.
на 2 - номера агрегатов (левый двигатель, правый дв. и редуктор)
на 3 - даты и содержание железа в масле соответсвующих агрегатов

Выбираем в 1 борт, во втором отбражаются его агрегаты в 3 данные проб.
Для Move созданы подстановочные поля (для отображения в DBGrid №2 номеров агрегатов и в DBGrid №3 кол-ва железа и дат).

Строится график в DBChart (содержание по дате). Эти части работают.

Для изменения/вставки записей вызывается Form2 на ней 10 DBEdit (по 3 для агрегата: номер, дата, содержание) и номер борта.

ВОПРОС:куда и как прикрутить Form2.DBEdit-ы чтобы можно было редактировать их содержимое и сохранить по нажатию ОК.

Для номера борта если DataSource - DataSource1, DataField - VsNum то оно редактируется, с подстановочными полями номеров, дат не редактируются.

Как организовать каскадное редактирование, удаление, вставку
применительно к этой системе? Если можно поподробнее.

Перерыл около десятка книг, но подробных примеров или объяснений нет, в инете аналогично.


Mb   (2006-10-20 20:00:00) [1]

Моя БД примерно так и состоит
таблица Move и есть комплектация вертолета.
Хотя наверное можно обойтись и одной (объединив VS и Move)?

У меня вопрос: Как соединить DBEdit с подстановочным
полем таблицы Move и редактировать их, и автоматически (каскадно?) редактировать записи в подчиненных к Move таблицах?


Sergey13   (2006-10-20 15:26:00) [2]

> [12] Mb ©   (20.10.06 15:20)

Кого "его", интерфейс? Оставь его в покое пока. Займись БД. Как? Свое мнение я написал в
> [8] Sergey13 ©   (20.10.06 08:43)


Mb   (2006-10-20 15:20:00) [3]

И как его перепроектировать?


Sergey13   (2006-10-20 13:09:00) [4]

> [10] Mb ©   (20.10.06 12:37)

Не от интерфеса плясать надо, а от проектирования БД.


Mb   (2006-10-20 12:37:00) [5]

все вертолеты имеют только комплектацию: правый и левый двигатели + 1 редуктор.
Связь борта и агрегатов делается в таблице Move.

Об интерфейсе:
На главной форме расположены 3 DBGrid:
На 1 - набор бортовых номеров вертолетов.
на 2 - номера агрегатов (левый двигатель, правый дв. и редуктор)
на 3 - даты и содержание железа в масле соответсвующих агрегатов

Первый DBGrid подключен к полям Vs, второй и третий DBGrid к полям Move.

DataBase, два DataSource (1 для VS и 2 для Move) и 5 TTable
(Vs, Move, Red, Proba, Dv) расположены в DataModule1.

Выбираем в 1 борт, во втором отбражаются его агрегаты в 3 данные проб.
Для Move созданы подстановочные поля (для отображения в DBGrid №2 номеров агрегатов и в DBGrid №3 кол-ва железа и дат).

Могу выслать исходники, может более понятно будет.


Anatoly Podgoretsky   (2006-10-20 08:50:00) [6]


> Парадокс нас с тобою переживет. Сколько б мы не пели ему
> отходную ;))

Архангельский и компанияю помогут.


Sergey13   (2006-10-20 08:43:00) [7]

> [7] Mb ©   (19.10.06 20:48)

1. У тебя однозначновсе вертолеты имеют (могут иметь) только такую комплектацию: правый и левый двигатели + 1 редуктор?
2. Все таки двигатель и редуктор - это принадлежность вертолета, а не полета.
3. Если по агрегатам реально хранится только номер, то выносить движки и редукторы в справочник в данной задачемне представляется мало целесообразным. Если только есть (или планируются) связанные задачи по ремонту и учету этих агрегатов.
4. Я бы завел еще таблицу - "комплектация вертолета", куда бы вынес связь борта и агрегатов. Если она не жесткая (см. вопр. 1), то нужна еще пара таблиц для ее описания.
5. В таблицу замеров писал бы просто ссылку на борт и результаты. Опять же если комплктация не жесткая, то немного сложнее, но смысл тот-же.


Mb   (2006-10-19 20:48:00) [8]

Смысел: по налету (через каждые 25 часов) берутся пробы.
Для удобства хранения и отображения их делается данная БД.
Строится графичек содержания в г/тонну, при достижении определенного
содержания решается вопрос о дальнейшей эксплуатации данного агрегата.

Как соединить DBEdit с loocup полем таблицы Move, чтобы можно было редактировать его и редактировать записи в дочерних таблицах атоматически?
Как делать подстановочные поля, связи типа Master-Detail для
каскадного удаления и редактирования?
Пользуюсь TTable.

А как без каскадности? В одной табличке одни агрегаты, в другой другие,
в третьей бортовые номера. Вроде как правильно. Или можно еще как?

Двигатель или редуктор может быть переставлен
несколько раз за межремонтный ресурс по дефекту или по другим причинам.
В Move оно все и видно когда, какой номер, сколько железа
а VS выбираем номер вертолета.


MsGuns   (2006-10-19 10:38:00) [9]

>Anatoly Podgoretsky ©   (19.10.06 09:02) [3]
>Парадокс не поддерживает, кроме того если Парадокс, то прощай полеты, здраствуй земля.

Парадокс нас с тобою переживет. Сколько б мы не пели ему отходную ;))


Zacho   (2006-10-19 10:20:00) [10]

Sergey13 ©   (19.10.06 10:04) [4]

+1

К тому же, imho, каскадный update/delete - потенциальная "бомба". Легкое движение руки - и пол-базы похерилось :)


Sergey13   (2006-10-19 10:04:00) [11]

ИМХО, если нормально спроектировать БД, нужда в каскадности отпадет сама собой.


Anatoly Podgoretsky   (2006-10-19 09:02:00) [12]

Парадокс не поддерживает, кроме того если Парадокс, то прощай полеты, здраствуй земля.


Sergey13   (2006-10-19 08:24:00) [13]

> [0] Mb ©   (18.10.06 18:51)

Move - это полеты? Если да, то они каждый раз с новыми двигателями/редукторами что-ли летают?


Shopot   (2006-10-18 21:14:00) [14]

Поподробнее объясни. Трудно понять что конкретно тебе нужно.
Как соединить DBEdit с полем таблицы БД? или
Как делать подстановочные поля, связи типа Master-Detail для
каскадного удаления и редактирования?
Каким компонентом пользуешься TTable или TQuery?


Наверх

Титульная страница Поиск, карта сайта Написать письмо