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

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

Вопрос по сохранению значений [D7]


BAX ©   (2006-01-16 14:11:00) 

Здравствуйте!
Подскажите пожалуйста как решить следующую проблему:

на форме есть два компонента RxDBLoocupCombo. Один из них настроен на выборку предприятий, второй на выборку цехов. Подразделения и цеха находятся в одной таблице. Различие между предприятием и цехом организовано в поле PrId. У предприятия 2 символа, а у цеха 3 символа.
После ввода данных, в эти компоненты, пользователь нажимает кнопку "сохранить" и данные сохраняются в таблице Dis. Чтобы показать пользователю, что данные введенные им есть - переоткрываем дата сет настроеный на таблицу DIS и вместе с ним переоткрываются другие дата сеты.
Вопрос: После переокрытия введеные ранее данные остаются только в компоненте отвечающем за предприятие, а в компоненте Цех они исчезают. Дата сет цеха настроен на ДатаСет предприятия. Подскажите пожалуйста как можно сохранить данные после переоткрытия в поле ввода ЦЕХ???

procedure TForm3.cmPRFKeyPress(Sender: TObject; var Key: Char);
var
 CehBookmark:TBookMark;
begin
IF KEY = #13 THEN
BEGIN
 try
 //создали закладку
  CehBookmark:=dm.Pred.GetBookmark;
  if cmCEH.KeyValue = null
   then raise EGetWarning.Create('Выберите цех!');
   if cmPRF.KeyValue = null
   then raise EGetWarning.Create('Выберите профессию!');
   try
     if DispanNew then
        begin
            DM.EFFs.Active:=true;
            DM.DISFIO.Active:=true;
            DM.Dispan.Last;
            Staj.SetFocus;
            Dm.Pred.Open;
            Dm.Ceh.Open;
        end;
   finally
   if DM.Ceh.BookmarkValid(CehBookmark) then
                 Dm.Ceh.GotoBookmark(CehBookmark);
    end;
 except
 on GW: EGetWarning do
   MessageBox(0, PChar(GW.Message), 'Недостаточно информации', MB_OK + MB_ICONWARNING);
 end;


Пробовал сделать через закладки. Закладка создается. Но вот данные в компоненте RxDBLookupCombo (cmCeh) не показываются, а закладка Dm.Ceh.GotoBookmark(CehBookmark) передается. Подскажите пожалуйста в чем может быть причина?


Sergey13   (2006-01-17 09:22:00) [1]

2 [8] BAX   (17.01.06 06:23)
Таблица (физическая) одна, а запросов (датасетов) по ней может быть сколько угодно.


ЮЮ   (2006-01-17 08:48:00) [2]

Позиционирование в RxDBLoocupCombo, не привязанному к DataSource, осуществляется установкой KeyValue. Поэтому надо запомнить текущие значения, а после переоткрытия ListSource их восстановить:

CEHKeyValue := cmCEH.KeyValue;
PRFKeyValue := cmPRF.KeyValue;
try
 ...
finally
 cmPRF.KeyValue := CEHKeyValue;
 cmPRF.KeyValue := PRFKeyValue;
end;


BAX   (2006-01-17 06:23:00) [3]

Дело в том что предприятие берется из той - же таблицы, что и цех. Для цеха в этой таблице есть поле PRID куда передается ID предприятия к которому он принадлежит. Как в этом случае можно спозиционироваться на Предприятие и на цех?


Sergey13   (2006-01-16 14:55:00) [4]

2 [6] BAX   (16.01.06 14:54)
Так же как и предприятия? В чем проблема то?


BAX   (2006-01-16 14:54:00) [5]

А потом как спозиционировать датасет цеха?


Sergey13   (2006-01-16 14:41:00) [6]

2[4] BAX   (16.01.06 14:39)
Чего как? Спозиционироваться? Locate например.


BAX   (2006-01-16 14:39:00) [7]

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


Sergey13   (2006-01-16 14:36:00) [8]

2[2] BAX   (16.01.06 14:24)
Ну дык при переоткрытии цехов наверное надо указать нужное ИД предприятия (или просто спозиционировать датасет предприятий на нужную запись).


BAX   (2006-01-16 14:24:00) [9]

В базе есть еще поле признак. В этом поле написано цех или предприятие. Да прав - Мастер-детайл. У цехов хранится ID предприятия к которому они принадлежат в поле PrId.


Sergey13   (2006-01-16 14:19:00) [10]

2BAX   (16.01.06 14:11)
>Различие между предприятием и цехом организовано в поле PrId. У предприятия 2 символа, а у цеха 3 символа.

ИМХО, это не есть хорощо.

Что-то непонятно, как цеха связаны в предприятием? Мастер-детайл или что?


Наверх

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