powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Видимость результата в DataSet с помощью returning
10 сообщений из 10, страница 1 из 1
Видимость результата в DataSet с помощью returning
    #39103451
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток форумчане,
Такой вопрос:
Можно ли с помощью предложения «Returning» вернуть ID нововставленной строки, таким образом, чтобы это ID , сразу запихнуть в соответствующее поле DataSet ? Чтобы пользователь мог его видеть не переоткрывая DataSet ?
Например что-нибудь вроде такого:
Код: sql
1.
2.
3.
4.
5.
insert into FEATURES_ETALON
  (CIMP_MRA, ID, MEASURAND)
values
  ('234', GEN_ID(GEN_ID_FEATURES_ETALON, 1), 'qwssw')
returning ID into :ID



Т.к. генератор ID срабатывает уже после BeforePost , и уже значение не вставишь.

Спасибо
P.S.
FireBird2.5.4
...
Рейтинг: 0 / 0
Видимость результата в DataSet с помощью returning
    #39103456
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kos-2010Можно ли с помощью предложения «Returning» вернуть ID нововставленной
строки, таким образом, чтобы это ID, сразу запихнуть в соответствующее поле DataSet? Чтобы
пользователь мог его видеть не переоткрывая DataSet?
Можно, разрешаю. "Как" - это вопрос к автору твоего безымянного DataSet.

Kos-2010Т.к. генератор ID срабатывает уже после BeforePost, и уже значение не
вставишь.
Куда не ставишь?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Видимость результата в DataSet с помощью returning
    #39103459
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том что это таблица в которую я вставляю запись, точнее к этой записи (после ее вставки), у меня можно прицепить к ней картинки (которые у меня хранятся в отдельной таблице).
Так вот я не разрешаю цеплять к записи картинки, пока у записи не появится ID (поле Dataset пустое)
...
Рейтинг: 0 / 0
Видимость результата в DataSet с помощью returning
    #39103462
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чти: http://ibase.ru/devinfo/generator.htm
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Видимость результата в DataSet с помощью returning
    #39103465
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так вот, если можно, то каким образом в DataSet заполнить поле ID , до commit транзакции?
...
Рейтинг: 0 / 0
Видимость результата в DataSet с помощью returning
    #39103469
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
См. выше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Видимость результата в DataSet с помощью returning
    #39103502
Kos-2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Спасибо за подсказку, метод GeneratorField (IBDataSet) с " Apply Event = OnPost ", как раз для меня подходит

а то я делал через ...
Перед вносом записи непосредственно в БД я обращаяюсь к внутренней процедуре (в которой, входной параметр - это номер таблицы в БД), которая мне возвращает актуальное новое ID, определенного генератора ID, определенной таблицы
Код:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
procedure TFMain.DataSetBeforePost(DataSet: TDataSet);
begin
IBStoredProc1.StoredProcName := 'SP_GET_ID';
  IBStoredProc1.ParamByName('NUMBER_TABLE').AsInteger := 0;
  IBStoredProc1.ExecProc;
  IBStoredProc1.Transaction.CommitRetaining;
  DataSet.FieldByName('ID').AsInteger := IBStoredProc1.ParamByName('ID').AsInteger; 
end;
...
Рейтинг: 0 / 0
Видимость результата в DataSet с помощью returning
    #39103513
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kos-2010Код:
Убивать. За отдельную транзакцию - с особой жестокостью.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Видимость результата в DataSet с помощью returning
    #39103814
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kos-2010Transaction.CommitRetaining;
ужас.
http://www.ibase.ru/devinfo/ibx.htm
...
Рейтинг: 0 / 0
Видимость результата в DataSet с помощью returning
    #39104081
Barkan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kos-2010,

Delphi не знаю (да его тут и никто не знает), поэтому напишу по русски:

Начать транзакцию
Трю
выполнить инсерт с ретёрнингом
втавить ИД в датасет куда надо
сохранить датасет в базу
коммит транзакции
Если кирдык
роллбэк транзакции
Конец трю

Вот как то так.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Видимость результата в DataSet с помощью returning
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]