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

Вниз

Вопрос по сохранению значений   Найти похожие ветки 

 
BAX   (2006-01-16 14:11) [0]

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

на форме есть два компонента 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-16 14:19) [1]

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

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

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


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

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


 
Sergey13 ©   (2006-01-16 14:36) [3]

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


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

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


 
Sergey13 ©   (2006-01-16 14:41) [5]

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


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

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


 
Sergey13 ©   (2006-01-16 14:55) [7]

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


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

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


 
ЮЮ ©   (2006-01-17 08:48) [9]

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

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


 
Sergey13 ©   (2006-01-17 09:22) [10]

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



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

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

Наверх




Память: 0.49 MB
Время: 0.056 c
5-1126707425
lookin
2005-09-14 18:17
2006.03.12
Компонент в dcu...


15-1140453655
Михаил (Киров)
2006-02-20 19:40
2006.03.12
COM-порт


2-1140526972
Alex_C
2006-02-21 16:02
2006.03.12
Как "пишать" через динамик?


4-1134992931
eugenemail1970
2005-12-19 14:48
2006.03.12
Как считать данные с СОМ-порта номер 10 и выше?


1-1139488062
Ling
2006-02-09 15:27
2006.03.12
Грамотно перекрыть flash`ке сообщения