Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Данные счетчика

24K
26 апреля 2008 года
-=Fatal1ty=-
34 / / 06.04.2008
Привет всем! Люди подскажите, добавляю новую запись в БД, как мне получить значение поля типа Счетчик???
Спасибо!
24K
26 апреля 2008 года
-=Fatal1ty=-
34 / / 06.04.2008
Цитата: -=Fatal1ty=-
Привет всем! Люди подскажите, добавляю новую запись в БД, как мне получить значение поля типа Счетчик???
Спасибо!



Оо нашол: DataRow row = myDataSet.myTable.NewRow();
row["<стечтик>"] -- вот он :))

341
28 апреля 2008 года
Der Meister
874 / / 21.12.2007
Не он. Во-первых, после создания записи её надо проинициализировать, во-вторых добавить в таблицу, а в-третьих - сохранить. Вот тогда это будет он. Автоинкремент для DataTable не пользуется данными из СУБД и, в общем случае, может не совпадать с реально сохранённым в базу данных значением. Гемор начнётся тогда, когда ты станешь добавлять связанные записи.
11
28 апреля 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: -=Fatal1ty=-
Привет всем! Люди подскажите, добавляю новую запись в БД, как мне получить значение поля типа Счетчик???
Спасибо!



какая СУБД и как добавляешь запись?

24K
30 апреля 2008 года
-=Fatal1ty=-
34 / / 06.04.2008
СУБД Access, добавляю так:
DataRow row = DataSet.MyTable.NewRow();
...
DataSet.MyTable.Rows.Add(row);
.. сохранение и т.д.
11
30 апреля 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: -=Fatal1ty=-
СУБД Access, добавляю так:
DataRow row = DataSet.MyTable.NewRow();
...
DataSet.MyTable.Rows.Add(row);
.. сохранение и т.д.



через запрос это решается так:

 
Код:
INSERT INTO TableName (FieldNames...) VALUES (Values...)
SELECT IDENTITY As NewValInc

после выполнения запроса на вставку даных он вернет новое значение счетчика
24K
30 апреля 2008 года
-=Fatal1ty=-
34 / / 06.04.2008
Цитата: Der Meister
Не он. Во-первых, после создания записи её надо проинициализировать, во-вторых добавить в таблицу, а в-третьих - сохранить. Вот тогда это будет он. Автоинкремент для DataTable не пользуется данными из СУБД и, в общем случае, может не совпадать с реально сохранённым в базу данных значением. Гемор начнётся тогда, когда ты станешь добавлять связанные записи.



Ну не знаю... Перепроверил раз 5 все работает отлично

P.S. Охотник спасибо за эту штуку (SELECT IDENTITY As NewValInc), не знал такого :))

24K
30 апреля 2008 года
-=Fatal1ty=-
34 / / 06.04.2008
Кстати - SELECT IDENTITY As NewValInc - чето неработает :(
11
30 апреля 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: -=Fatal1ty=-
Кстати - SELECT IDENTITY As NewValInc - чето неработает :(



а как вызываешь?

713
30 апреля 2008 года
Ap0k
360 / / 13.03.2006
[COLOR="Blue"]SELECT[/COLOR] [COLOR="Magenta"]@@IDENTITY[/COLOR] [COLOR="Blue"]AS[/COLOR] InsertedValueIdentity
или
[COLOR="Blue"]SELECT[/COLOR] [COLOR="Magenta"]SCOPE_IDENTITY()[/COLOR] [COLOR="Blue"]AS[/COLOR] InsertedValueIdentity
Логичнее делать вызов приведенных выше функций в хранимой процедуре производящей вставку и отдавать клиенту возвращаемое ими значение в OUTPUT параметре.
PS: SCOPE_IDENTITY и @@IDENTITY - вещи разные
UPD: актуально для SQL Server
24K
30 апреля 2008 года
-=Fatal1ty=-
34 / / 06.04.2008
Цитата: Ap0k
[COLOR="Blue"]SELECT[/COLOR] [COLOR="Magenta"]@@IDENTITY[/COLOR] [COLOR="Blue"]AS[/COLOR] InsertedValueIdentity
или
[COLOR="Blue"]SELECT[/COLOR] [COLOR="Magenta"]SCOPE_IDENTITY()[/COLOR] [COLOR="Blue"]AS[/COLOR] InsertedValueIdentity
Логичнее делать вызов приведенных выше функций в хранимой процедуре производящей вставку и отдавать клиенту возвращаемое ими значение в OUTPUT параметре.
PS: SCOPE_IDENTITY и @@IDENTITY - вещи разные
UPD: актуально для SQL Server



оО спасибо, разобрался

341
02 мая 2008 года
Der Meister
874 / / 21.12.2007
Цитата:
Ну не знаю... Перепроверил раз 5 все работает отлично

Создай новую таблицу с полем типа "счётчик", добавь в неё пять записей, сохрани, затем удали две последние и опять сохрани. Если затем добавить новую запись, то автоинкремент ADO .Net даст значение 4, а Access - 6. Значение станет корректным только после сохранения, поскольку, если ты используешь набор данных, сгенерированный мастером, то запрос вида INSERT + SELECT * FROM TableName WHERE (ID = IDENTITY) обычно строится им автоматически.

Цитата:
Кстати - SELECT IDENTITY As NewValInc - чето неработает

Просто так значение IDENTITY, по идее, получить нельзя. Оно актуально лишь в контексте того запроса, в котором учавствовала операция добавления записи.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог