Извлечения значений autoinc с бпр в Delphi 2005
в этой статье я буду использовать термин “личность” как синонимы отметить автоматическую генерацию (с СУРД) значения, как правило, на столбец, представляющий первичный ключ таблицы. Это называется “последовательность” в Oracle и “Генераторы” в InterBase.
 на самом деле, есть 3 варианта получить значение Identity назад с помощью ADO .Сеть:
- использовать пакет запросов (базы данных, очевидно, должен поддерживать это)
- использовать хранимые процедуры (команда Insert), имеющих в качестве выходного параметра “идентичность” значением (это самый быстрый и, таким образом, Рекомендуемый метод)
- ручки адаптера RowUpdated /событие rowupdating событие и выдать запрос "Select @@Identity" и (в случае SQL-сервера) запрос на код в обработчик событий (медленный) р><р класса="step_content "><п > & мочекаменная р><р класса="step_content ">
первый два варианта полагаться на UpdatedRowSource свойство объекта Command, так что новое значение передается обратно в объект dataset. К сожалению, данный объект в настоящее время не реализованы в bdpCommand. Это означает, что единственный приемлемый вариант-это 3-я и буду строить образца заявления (против MS SQL сервер базы данных northwind) показывает следующее: 
- начать с Delphi 2005.
- как файл | создать и выберите "Приложение Windows - Delphi для .Вариант чистых".
- тянуть из данных таблицы dbo.Таблица "сотрудники" из базы данных "Борей" в поставщика в MSSQL (подробности о настройке этого подключения можно найти в этой прекрасной статье Боба Сварта). Таблицы "сотрудники" использует столбец AutoInc как первичный ключ называют “Кодсотрудника”
- щелкните правой кнопкой мыши BDPDataAdapter и выберите пункт настроить адаптер. После этого появится адаптер данных форма конфигурации для bdpAdapter компонента. Изменения в предложении Select, как показано на рисунке ниже и нажмите кнопку GenerateSQL:
Р><Р класса="step_content "> р><р класса="step_content "> & мочекаменная р><р класса="step_content ">
 р><р класса="step_content "> & мочекаменная р><р класса="step_content ">-  нажмите на данных вкладке и выберите пункт “новый набор” и нажать "ОК".
-  набор bdpAdapter свойство Active в True.
-  нажмите на собственность таблиц созданной базы данных (“имя dataset1”). На экране появится коллекция таблиц редактор свойств для набора данных. Выберите Столбцы, а после этого появится редактор столбцов для таблицы "сотрудники". Выберите “Кодсотрудника” столбца и измените следующие свойства: 
 В- AutoIncrement=True
- AutoIncrementSeed=-1
- AutoIncrementStep=-1
 
<класс p="step_content ">, как показано в следующую картину:р><р класса="step_content "> р><р класса="step_content "><див класс='embed_block_0'> <див ИД="блок-google_admanager-1" класса="блок блок-google_admanager области-другие области-количество-1 Количество-1 блок-Без названия "> <див класс="блок-топ">дел> <див класс="блок-внутренний"> <див класс="содержание"> див> <див класс="блок-дна">див> див> див> див><див класс='embed_block_1'><див>див>див><п ><Стронг>внимание: , так как значения мы будем устанавливать в набор данных будут потеряны в любом случае во время применения обновлений к базе данных, тогда любой дурак (уникальные) значения могут быть использованы в качестве хорошо. Тем не менее, это хорошая практика, чтобы установить значение Автоинкрементного столбца, представляющих поле первичного ключа, как истинная и уникальная отрицательные значения, потому что таким образом мы опираемся на свойства набора данных, чтобы получить временное уникальных значений и, кроме того, используя отрицательные значения в качестве временных employeeid значения гарантирует, что нет никакого конфликта с постоянной (положительной) сервер базы данных присвоенных значений. р><р класса="step_content ">
р><р класса="step_content "><див класс='embed_block_0'> <див ИД="блок-google_admanager-1" класса="блок блок-google_admanager области-другие области-количество-1 Количество-1 блок-Без названия "> <див класс="блок-топ">дел> <див класс="блок-внутренний"> <див класс="содержание"> див> <див класс="блок-дна">див> див> див> див><див класс='embed_block_1'><див>див>див><п ><Стронг>внимание: , так как значения мы будем устанавливать в набор данных будут потеряны в любом случае во время применения обновлений к базе данных, тогда любой дурак (уникальные) значения могут быть использованы в качестве хорошо. Тем не менее, это хорошая практика, чтобы установить значение Автоинкрементного столбца, представляющих поле первичного ключа, как истинная и уникальная отрицательные значения, потому что таким образом мы опираемся на свойства набора данных, чтобы получить временное уникальных значений и, кроме того, используя отрицательные значения в качестве временных employeeid значения гарантирует, что нет никакого конфликта с постоянной (положительной) сервер базы данных присвоенных значений. р><р класса="step_content ">-  перетащите элемент управления datagrid на форму и установите свойство datasource в dataset1 и его свойстве DataMember “сотрудники”.
- сбросить кнопку переименовать его как значок btnsave и установить ее текст на “сохранить изменения”. Дважды щелкните на кнопке и введите следующий код:
, а тегв процедуре TWinForm1.btnSave_Click(отправителя: система.Объект е: системы.Eventargs в) 
 и начинается
 BdpDataAdapter1.Автообновление(Имя Dataset1, "Сотрудников", BdpUpdateMode.Все, ['Кодсотрудника'],[]) 
 В конце р><р класса="step_content ">элемент blockquote>р><р класса="step_content "> 4-х<с sup>гоглоток>параметр "Автоматическое обновление" метод определяет Кодсотрудника как читать только колонки (что означает, что он не будет включен в окончательный пункт вставить) и вот что мы на самом деле хотим, так как это значение будет автоматически сгенерирован из базы данных сервера.
- наконец, дважды щелкните событие RowUpdated из bdpAdapter и добавьте следующий обработчик:
Р><Р класса="step_content ">тегв процедуре TWinForm1.BdpDataAdapter1_RowUpdated(отправителя: система.Объект е: Борланд.Данных.Поставщика.BdpRowUpdatedEventArgs) 
 вар
 В УМК:BdpCommand 
 и начинается
 если (электронная.Состояние=Состояние Обновления.Продолжения) и
 (Эл.StatementType=StatementType.Вставить)
 после
 и начинается
 УМК:=BdpCommand.Создать('выберите @@Identity',BdpConnection1) 
 с электронной.Строки['Кодсотрудника']:=Цмд.Executescalar так и 
 электронная.Строки.Метод acceptchanges 
 В конце 
 В конце р><р класса="step_content "> элемент blockquote>р><р класса="step_content ">во-первых, я смог убедиться, что ошибка не приходят во время обновления данной строки (состояние обновления.Продолжение) и если строка была сохранена, был вставлен один. В этом случае я создаю объект bdpCommand выдачи запроса Select @@идентичности. Затем я присваиваю полученное значение в текущей строке (электронная.подряд) и, наконец, я называю е.Строки.Метод acceptchanges для удаления изменение, которое я сделал из журнала изменений.
 обратите внимание, что мы должны использовать @@функция scope_identity вместо @@Identity в случае проверки таблиц в базе данных автоматически обновляется через триггер (что @@Identity значение вставляется в Счетной таблице, а не в "реальной" таблице мы обновляем).
 
ир><р класса="step_content "><р >Запустите приложение и добавить пару строк: р><р класса="step_content "> 
ир><р класса="step_content "><р > нажмите кнопку “Сохранить изменения” кнопку и employeeid значения будут автоматически обновлялось:р><р класса="step_content "> р><р класса="step_content "> & мочекаменная р><р класса="step_content ">
 р><р класса="step_content "> & мочекаменная р><р класса="step_content ">
на подобные методы (вовлечение в событие rowupdating событие) может быть использован для получения сгенерированного значения из БД InterBase генератора до применения этого новое значение в базу данных 
<п > & мочекаменная р><р класса="step_content "><п ><Стронг>ссылки:вр><р класса="step_content "><п >- Борланд Делфи 2005 RAD для ADO.NET - Боб Сварт
 В Майкрософт АДО .Чистый (Майкрософт пресс) Дэвид Sceppa
 - А как использовать Autoinc полей с помощью datasnap Дэн Скупойр><р класса="step_content "> & мочекаменная р><дел стиль= \ ясно:оба поплавка:нет'>дел><дел стиль= \ ясно:оба поплавка:нет'> & мочекаменная див>
Извлечения значений autoinc с бпр в Delphi 2005
 
Извлечения значений autoinc с бпр в Delphi 2005 : Несколько тысяч советов, которые сделают вашу жизнь проще. 
 
в этой статье я буду использовать термин “личность” как синонимы отметить автоматическую генерацию (с СУРД) значения, как правило, на столбец, представляющий первичный ключ таблицы. Это называется “последовательность” в Oracle и “Генераторы” в InterBase.
 на самом деле, есть 3 варианта получить значение Identity назад с помощью ADO .Сеть:
- использовать пакет запросов (базы данных, очевидно, должен поддерживать это)
- использовать хранимые процедуры (команда Insert), имеющих в качестве выходного параметра “идентичность” значением (это самый быстрый и, таким образом, Рекомендуемый метод)
- ручки адаптера RowUpdated /событие rowupdating событие и выдать запрос "Select @@Identity" и (в случае SQL-сервера) запрос на код в обработчик событий (медленный) р><р класса="step_content "><п > & мочекаменная р><р класса="step_content ">
первый два варианта полагаться на UpdatedRowSource свойство объекта Command, так что новое значение передается обратно в объект dataset. К сожалению, данный объект в настоящее время не реализованы в bdpCommand. Это означает, что единственный приемлемый вариант-это 3-я и буду строить образца заявления (против MS SQL сервер базы данных northwind) показывает следующее: 
- начать с Delphi 2005.
- как файл | создать и выберите "Приложение Windows - Delphi для .Вариант чистых".
- тянуть из данных таблицы dbo.Таблица "сотрудники" из базы данных "Борей" в поставщика в MSSQL (подробности о настройке этого подключения можно найти в этой прекрасной статье Боба Сварта). Таблицы "сотрудники" использует столбец AutoInc как первичный ключ называют “Кодсотрудника”
- щелкните правой кнопкой мыши BDPDataAdapter и выберите пункт настроить адаптер. После этого появится адаптер данных форма конфигурации для bdpAdapter компонента. Изменения в предложении Select, как показано на рисунке ниже и нажмите кнопку GenerateSQL:
Р><Р класса="step_content "> р><р класса="step_content "> & мочекаменная р><р класса="step_content ">
 р><р класса="step_content "> & мочекаменная р><р класса="step_content ">-  нажмите на данных вкладке и выберите пункт “новый набор” и нажать "ОК".
-  набор bdpAdapter свойство Active в True.
-  нажмите на собственность таблиц созданной базы данных (“имя dataset1”). На экране появится коллекция таблиц редактор свойств для набора данных. Выберите Столбцы, а после этого появится редактор столбцов для таблицы "сотрудники". Выберите “Кодсотрудника” столбца и измените следующие свойства: 
 В- AutoIncrement=True
- AutoIncrementSeed=-1
- AutoIncrementStep=-1
 
<класс p="step_content ">, как показано в следующую картину:р><р класса="step_content "> р><р класса="step_content "><див класс='embed_block_0'> <див ИД="блок-google_admanager-1" класса="блок блок-google_admanager области-другие области-количество-1 Количество-1 блок-Без названия "> <див класс="блок-топ">дел> <див класс="блок-внутренний"> <див класс="содержание"> див> <див класс="блок-дна">див> див> див> див><див класс='embed_block_1'><див>див>див><п ><Стронг>внимание: , так как значения мы будем устанавливать в набор данных будут потеряны в любом случае во время применения обновлений к базе данных, тогда любой дурак (уникальные) значения могут быть использованы в качестве хорошо. Тем не менее, это хорошая практика, чтобы установить значение Автоинкрементного столбца, представляющих поле первичного ключа, как истинная и уникальная отрицательные значения, потому что таким образом мы опираемся на свойства набора данных, чтобы получить временное уникальных значений и, кроме того, используя отрицательные значения в качестве временных employeeid значения гарантирует, что нет никакого конфликта с постоянной (положительной) сервер базы данных присвоенных значений. р><р класса="step_content ">
р><р класса="step_content "><див класс='embed_block_0'> <див ИД="блок-google_admanager-1" класса="блок блок-google_admanager области-другие области-количество-1 Количество-1 блок-Без названия "> <див класс="блок-топ">дел> <див класс="блок-внутренний"> <див класс="содержание"> див> <див класс="блок-дна">див> див> див> див><див класс='embed_block_1'><див>див>див><п ><Стронг>внимание: , так как значения мы будем устанавливать в набор данных будут потеряны в любом случае во время применения обновлений к базе данных, тогда любой дурак (уникальные) значения могут быть использованы в качестве хорошо. Тем не менее, это хорошая практика, чтобы установить значение Автоинкрементного столбца, представляющих поле первичного ключа, как истинная и уникальная отрицательные значения, потому что таким образом мы опираемся на свойства набора данных, чтобы получить временное уникальных значений и, кроме того, используя отрицательные значения в качестве временных employeeid значения гарантирует, что нет никакого конфликта с постоянной (положительной) сервер базы данных присвоенных значений. р><р класса="step_content ">-  перетащите элемент управления datagrid на форму и установите свойство datasource в dataset1 и его свойстве DataMember “сотрудники”.
- сбросить кнопку переименовать его как значок btnsave и установить ее текст на “сохранить изменения”. Дважды щелкните на кнопке и введите следующий код:
, а тегв процедуре TWinForm1.btnSave_Click(отправителя: система.Объект е: системы.Eventargs в) 
 и начинается
 BdpDataAdapter1.Автообновление(Имя Dataset1, "Сотрудников", BdpUpdateMode.Все, ['Кодсотрудника'],[]) 
 В конце р><р класса="step_content ">элемент blockquote>р><р класса="step_content "> 4-х<с sup>гоглоток>параметр "Автоматическое обновление" метод определяет Кодсотрудника как читать только колонки (что означает, что он не будет включен в окончательный пункт вставить) и вот что мы на самом деле хотим, так как это значение будет автоматически сгенерирован из базы данных сервера.
- наконец, дважды щелкните событие RowUpdated из bdpAdapter и добавьте следующий обработчик:
Р><Р класса="step_content ">тегв процедуре TWinForm1.BdpDataAdapter1_RowUpdated(отправителя: система.Объект е: Борланд.Данных.Поставщика.BdpRowUpdatedEventArgs) 
 вар
 В УМК:BdpCommand 
 и начинается
 если (электронная.Состояние=Состояние Обновления.Продолжения) и
 (Эл.StatementType=StatementType.Вставить)
 после
 и начинается
 УМК:=BdpCommand.Создать('выберите @@Identity',BdpConnection1) 
 с электронной.Строки['Кодсотрудника']:=Цмд.Executescalar так и 
 электронная.Строки.Метод acceptchanges 
 В конце 
 В конце р><р класса="step_content "> элемент blockquote>р><р класса="step_content ">во-первых, я смог убедиться, что ошибка не приходят во время обновления данной строки (состояние обновления.Продолжение) и если строка была сохранена, был вставлен один. В этом случае я создаю объект bdpCommand выдачи запроса Select @@идентичности. Затем я присваиваю полученное значение в текущей строке (электронная.подряд) и, наконец, я называю е.Строки.Метод acceptchanges для удаления изменение, которое я сделал из журнала изменений.
 обратите внимание, что мы должны использовать @@функция scope_identity вместо @@Identity в случае проверки таблиц в базе данных автоматически обновляется через триггер (что @@Identity значение вставляется в Счетной таблице, а не в "реальной" таблице мы обновляем).
 
ир><р класса="step_content "><р >Запустите приложение и добавить пару строк: р><р класса="step_content "> 
ир><р класса="step_content "><р > нажмите кнопку “Сохранить изменения” кнопку и employeeid значения будут автоматически обновлялось:р><р класса="step_content "> р><р класса="step_content "> & мочекаменная р><р класса="step_content ">
 р><р класса="step_content "> & мочекаменная р><р класса="step_content ">
на подобные методы (вовлечение в событие rowupdating событие) может быть использован для получения сгенерированного значения из БД InterBase генератора до применения этого новое значение в базу данных 
<п > & мочекаменная р><р класса="step_content "><п ><Стронг>ссылки:вр><р класса="step_content "><п >- Борланд Делфи 2005 RAD для ADO.NET - Боб Сварт
 В Майкрософт АДО .Чистый (Майкрософт пресс) Дэвид Sceppa
 - А как использовать Autoinc полей с помощью datasnap Дэн Скупойр><р класса="step_content "> & мочекаменная р><дел стиль= \ ясно:оба поплавка:нет'>дел><дел стиль= \ ясно:оба поплавка:нет'> & мочекаменная див>
 
Извлечения значений autoinc с бпр в Delphi 2005
By russiatips
Извлечения значений autoinc с бпр в Delphi 2005 : Несколько тысяч советов, которые сделают вашу жизнь проще.