![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Редактирование БД [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?