как отловить ID новой записи?
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
dumpino Участник со стажем
Вступление в Клуб: 13.12.2011
|
Пт Авг 10, 2012 09:15  как отловить ID новой записи? |
|
Полезность: Нет оценки
|
как можно отловить ID новой записи в справочнике в следующих вариантах работы:
1. В процедуре конструкторе (Добавить новую запись)
2. В другой процедуре, которая вызывает конструктор из п.1 с помощью PLPCALL
у? |
|
 |
devor Профи
Вступление в Клуб: 13.02.2012
|
Пт Авг 10, 2012 09:26  Re: как отловить ID новой записи? |
|
Полезность: Нет оценки
|
dumpino пишет: | как можно отловить ID новой записи в справочнике в следующих вариантах работы:
1. В процедуре конструкторе (Добавить новую запись)
2. В другой процедуре, которая вызывает конструктор из п.1 с помощью PLPCALL
у? |
Конструктор возвращает ссылку на созданный экземпляр.
Код: | V_PARAM_FOR_PLAN_REF := [PARAM_FOR_PLAN].[NEW#AUTO] |
Код: | ("<% PLPCALL %VAR%.V_PARAM_FOR_PLAN_REF := [PARAM_FOR_PLAN].[NEW#AUTO]() %>") |
|
|
 |
dumpino Участник со стажем
Вступление в Клуб: 13.12.2011
|
Пт Авг 10, 2012 09:37  Re: как отловить ID новой записи? |
|
Полезность: Нет оценки
|
devor пишет: | dumpino пишет: | как можно отловить ID новой записи в справочнике в следующих вариантах работы:
1. В процедуре конструкторе (Добавить новую запись)
2. В другой процедуре, которая вызывает конструктор из п.1 с помощью PLPCALL
у? |
Конструктор возвращает ссылку на созданный экземпляр.
Код: | V_PARAM_FOR_PLAN_REF := [PARAM_FOR_PLAN].[NEW#AUTO] |
Код: | ("<% PLPCALL %VAR%.V_PARAM_FOR_PLAN_REF := [PARAM_FOR_PLAN].[NEW#AUTO]() %>") |
|
спасибо за ответ.
но, кажется, я понял, то что я хочу сделать так не получится. пока не создастся запись, ID у неё не будет. Придется делать обходным путём.
Вначале [NEW#AUTO], а потом сразу [EDIT#AUTO] |
|
 |
Alexsey Эксперт
Вступление в Клуб: 06.09.2007
|
Пт Авг 10, 2012 09:55  Re: как отловить ID новой записи? |
|
Полезность: 1
|
dumpino пишет: | devor пишет: | dumpino пишет: | как можно отловить ID новой записи в справочнике в следующих вариантах работы:
1. В процедуре конструкторе (Добавить новую запись)
2. В другой процедуре, которая вызывает конструктор из п.1 с помощью PLPCALL
у? |
Конструктор возвращает ссылку на созданный экземпляр.
Код: | V_PARAM_FOR_PLAN_REF := [PARAM_FOR_PLAN].[NEW#AUTO] |
Код: | ("<% PLPCALL %VAR%.V_PARAM_FOR_PLAN_REF := [PARAM_FOR_PLAN].[NEW#AUTO]() %>") |
|
спасибо за ответ.
но, кажется, я понял, то что я хочу сделать так не получится. пока не создастся запись, ID у неё не будет. Придется делать обходным путём.
Вначале [NEW#AUTO], а потом сразу [EDIT#AUTO] |
пример:
Код: | declare
v_param [PARAM_FOR_PLAN];
begin
v_param%init;
V_PARAM_FOR_PLAN_REF:= ::[PARAM_FOR_PLAN]%insert(v_param);
stdio.put_line_buf('<% PLPCALL %VAR%.V_PARAM_FOR_PLAN_REF.[EDIT#AUTO]() %>');
end; |
ну или заполняешь структуру необходимыми данными до инсерта _________________ всегда есть как минимум 2 выхода |
|
 |
dumpino Участник со стажем
Вступление в Клуб: 13.12.2011
|
Пт Авг 10, 2012 10:41  Re: как отловить ID новой записи? |
|
Полезность: Нет оценки
|
Alexsey пишет: |
пример:
Код: | declare
v_param [PARAM_FOR_PLAN];
begin
v_param%init;
V_PARAM_FOR_PLAN_REF:= ::[PARAM_FOR_PLAN]%insert(v_param);
stdio.put_line_buf('<% PLPCALL %VAR%.V_PARAM_FOR_PLAN_REF.[EDIT#AUTO]() %>');
end; |
ну или заполняешь структуру необходимыми данными до инсерта |
во, отличная штука. вот так и буду делать, спасибо! |
|
 |
Vovidez Профи
Вступление в Клуб: 27.09.2007
|
Ср Авг 15, 2012 09:58  Re: как отловить ID новой записи? |
|
Полезность: 1
|
dumpino пишет: | как можно отловить ID новой записи в справочнике в следующих вариантах работы:
1. В процедуре конструкторе (Добавить новую запись)
|
См. признак Простого констурктора: "При работе "простого" конструктора перед его вызовом из АРМа "Навигатор" создается пустой экземпляр, в который и записываются реквизиты вновь создаваемого объекта. При работе же обычного ("сложного") конструктора экземпляр создается не перед вызовом операции, а в ней самой после заполнения реквизитов (если операция не использует коллекции, принадлежащие вновь создаваемому экземпляру). Введение "простого" конструктора обусловлено тем, что на таблице типа могут быть, например, ограничения целостности, и тогда работа "сложного" конструктора будет невозможна, т.к. при создании пустого экземпляра не будут соблюдаться условия ограничения."
Кто мешает выставить флаг простого конструктора и иметь ID экземпляра уже на этапе поднятия ЭФ конструктора? |
|
 |
dumpino Участник со стажем
Вступление в Клуб: 13.12.2011
|
Ср Авг 15, 2012 11:16  Re: как отловить ID новой записи? |
|
Полезность: Нет оценки
|
Vovidez пишет: |
См. признак Простого констурктора: "При работе "простого" конструктора перед его вызовом из АРМа "Навигатор" создается пустой экземпляр, в который и записываются реквизиты вновь создаваемого объекта. При работе же обычного ("сложного") конструктора экземпляр создается не перед вызовом операции, а в ней самой после заполнения реквизитов (если операция не использует коллекции, принадлежащие вновь создаваемому экземпляру). Введение "простого" конструктора обусловлено тем, что на таблице типа могут быть, например, ограничения целостности, и тогда работа "сложного" конструктора будет невозможна, т.к. при создании пустого экземпляра не будут соблюдаться условия ограничения."
Кто мешает выставить флаг простого конструктора и иметь ID экземпляра уже на этапе поднятия ЭФ конструктора? |
спасибо, это то что нужно. Не знал про этот признак. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|