Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

Казус в создании MDI-приложения с использование баз данных!   Найти похожие ветки 

 
Артем К.   (2004-04-01 06:26) [0]

Здравствуйте, уважаемые Мастера!

Подскажите пожалуйста как:

1. У меня есть две таблицы: Журнал документов (Master) и Документ(Detail).
2. Они связаны по полю N (Номер документа).
3. В таблице "Журнал документов" указывается шапка документа, а в таблице "Документ" - тело документа.
4. У меня MDI-приложение.
5. Можно создавать несколько документов, а журнал открывать только один раз.
6. Допустим, если у меня октыт журнал документов и я создаю новый документ (в заголовке которого указывается шапка документа), то в журнале указывается шапка текущего (вновь созданного) документа.
7. А если я не закрывая вновь созданный документ, перевожу указатель записи в журнале документов на другую запись, то соответственно во всех открытых документах будет указываться данные для выбранной шапки документа.
8. Т.е. получится казус - не соответствие заголовка открытого документа и выбранной шапки в журнале документа.

Подскажите можно ли как-нибудь решить эту проблему.

Заранее спасибо!


 
ЮЮ ©   (2004-04-01 07:18) [1]

DataSet для открытого докумета не должен быть связан с DataSet-ом Журнал документов, а, например, использовать параметрический запрос, значение параметра для которого получать из Журнал документов при создании MDI-Сhild формы


 
Артем К.   (2004-04-01 07:43) [2]

Я только начинаю осваивать базы данных. Не могли бы Вы поконкретнее написать как это сделать, пожалуйста.


 
ЮЮ ©   (2004-04-01 07:54) [3]

На Child форме свой TQuery, выбирающий необходимую информацию для формы "Документ", с параметрическим запросом, например

SELECT * FROM Detail Where MasterID = :MasterID

TChildFrm = class(TForm)
 ...
piblic
   constructor Create(AOwner: TComponent; MasterId: integer); reintroduce;
 ...
constructor TfrmDocument.Create(
 AOwner: TComponent; Id, DocumentType: integer
);
begin
 inherited Create(AOwner);
 Query.Params[0].asInteger := MasterId;
 Query.Open;
 ...


 
Sergey13 ©   (2004-04-01 08:31) [4]

2Артем К.   (01.04.04 06:26)
Мдя. С таким подходом надо быть предельно осторожным. Каждая дочка должна помнить полное состояние всего на момент своего открытия. Там же могут быть ссылки на датасеты (или другие объекты), не отраженные на главной форме, и изменяющие свое состояние неявно.
А что за нужда работать с несколькими документами сразу? Да тем более, как я понял, в режиме чтение/запись? Тут в транзакциях запутатья - раз плюнуть.

При условии, что "Я только начинаю осваивать базы данных" я бы посоветовал отказаться от такого подхода.


 
Артем К.   (2004-04-01 08:57) [5]

Что поделаешь? Курсовая - такое задание :(


 
Sergey13 ©   (2004-04-01 09:08) [6]

Паралельное создание/редактирование документов в одной проге - задание? Или вы ошибаетесь, или... не тому у нас учат (опыт работы с вордом переносят в БД).
ИМХО
8-(


 
Артем К.   (2004-04-01 09:15) [7]

Да! Вот такие мы зверьки :)
Можь исходник есть какой-нить?



Страницы: 1 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.05 c
1-1081622318
Paladin
2004-04-10 22:38
2004.04.25
Всплывающие подсказки


1-1081158482
СержК
2004-04-05 13:48
2004.04.25
При создании ТХТ файла выдает ошибку


7-1078403652
mike_g
2004-03-04 15:34
2004.04.25
Работа с com портами


11-1059306656
Кладов
2003-07-27 15:50
2004.04.25
глюк комбобокса?


1-1081702840
Максим
2004-04-11 21:00
2004.04.25
Снова про прозрачную кнопку.