Конференция "Базы" » Возвратить ID вставленной записи [D7, IB6.x]
 
  • worldmen (29.04.09 17:29) [0]
    Как узнать ID вставленной записи, чтоб передать его другой форме. Запись вставляю с помощью TpFIBQuery, ID генерится генератором - gen_id(gen_id_tst,1)
  • Медвежонок Пятачок © (29.04.09 17:30) [1]
    Там же все есть в самой библиотеке.
    ТОлько прочитать доку
  • worldmen (29.04.09 19:12) [2]
    Можете носом ткнуть - ничего не нашел
    Скачал pdf файл на русском и посмотрел хелп для Д7 на англ.
  • ТД (29.04.09 19:58) [3]

    >  ID генерится генератором - gen_id(gen_id_tst,1)

    где генерится?
    уже прочитал наизусть http://www.ibase.ru/devinfo/generator.htm ?
  • Медвежонок Пятачок © (29.04.09 22:51) [4]
    Можете носом ткнуть - ничего не нашел

    Все необходимое есть в паблишед свойствах фибдатасета.
  • Виталий Панасенко (30.04.09 10:04) [5]

    > Медвежонок Пятачок ©   (29.04.09 22:51) [4]

    Но нету у FIBQuery...

    > worldmen   (29.04.09 17:29)  

    Запрос бы показал
  • Медвежонок Пятачок © (30.04.09 10:43) [6]
    Как узнать ID вставленной записи, чтоб передать его другой форме.

    Здесь не про запрос надо спрашивать, а скорее всего править консерваторию.

    Подозреваю что речь идет о двух формах. Одна с гридом и кнопками new edit delete, другая для операции едит.

    И у автора проблема обработки кнопки new.
    То есть он в модуле с гридом делает инсерт, затем хочет окрыть вторую форму.

    Инсерт надо делать во втором модуле а передавать туда -1 в качесвте ключа. Если редактируемый датасет окажется пустым, делать аппенд, иначе делать едит (случай редактирования "старой" записи)
  • SHM © (07.05.09 17:16) [7]
    Всегда работаю с СУБД через самописные промежуточные классы. Не уверен, что сейчас реализую самым оптимальным способом но логика такая:
    1. Получив команду на инсерт выполняем резервирование ключа, добавлением пустой записи в базу. Каждая таблица расширена на несколько служебных полей. Одно из таких SESSION_ID используется для различных целей в том числе и резервирования.
    2. Сразу после добавления пустой записи, происходит выборка последней записи с текущим SESSION_ID.
    3. Получаем локальную запись, инициализированную по правилам настроек таблицы настороне СУБД, в том числе и с заданным ID записи. Остается только задать поля и отправить на UPDATE
  • Медвежонок Пятачок © (07.05.09 17:19) [8]
    колеса в твоем велосипеде квадратные однако.
 
Конференция "Базы" » Возвратить ID вставленной записи [D7, IB6.x]
Есть новые Нет новых   [134474   +35][b:0][p:0]