Форум: "Базы";
Текущий архив: 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