Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.012 c
15-1140266222
VlJ
2006-02-18 15:37
2006.03.12
Разработка модуля для проекта


3-1137360081
Kabazoo
2006-01-16 00:21
2006.03.12
лишние символы в записи таблицы БД (firebird, delphi7)


3-1137785105
turonix
2006-01-20 22:25
2006.03.12
Как определить входит ли поле в состав вторичного ключа средствам


15-1139941157
YurikGL
2006-02-14 21:19
2006.03.12
Путь модератора...


4-1134995633
psa247
2005-12-19 15:33
2006.03.12
Win32FindData !





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский