|
|
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Добавляю запись в таблицу с полем Id(тип AutoNumber) и хочу узнать, как получить значения поля Id добавленной записи? Использованиt ADO.Record set и Max(Id) нежелательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:02 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Ну что ж... Тогда используй DAO :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:04 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Если вы добавляете запись через recordset, то после addnew вы просто можете считать значение поля со счетчиком ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:10 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Dim rst As ADODB.Recordset Set rst = New ADODB.Recordset CurrentProject.Connection.Execute "INSERT INTO Траты ( [Код Клиента], Сумма ) " _ & "values( 1 , 1000)" rst.Open "SELECT @@identity as dd", CurrentProject.Connection MsgBox rst!dd ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:11 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
2 Хам трамвайный Маленький нюанс - это для SQL Server. И ещё один - в момент добавления на таблицу "Траты" срабатывает тригер по добавлению записи в другую таблицу - опань-ки - идентити уже не тот:) 2 GuDVin В аксесе делай селект поля autonumber с критериям для добавленной записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:14 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
> Маленький нюанс - это для SQL Server. Это также работает в mdb с ADO и jet 4 > И ещё один - в момент добавления на таблицу "Траты" > срабатывает тригер по добавлению записи в другую таблицу > - опань-ки - идентити уже не тот:) С этим тоже можно бороться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:16 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Других вариантов нет? Просто поиск строки с параметрами добавленной строки может не всегда привести к нужному результату (если есть строки отличающиеся только Id'ом). И MAX не всегда помогает(если запрос на добавление не выполнился) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:18 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
2 IgorM Про mdb честно говоря не знал. Про бороться-то в курес - есть несколько способов (на этом сайте в FAQ кажется описан) - просто решил, что стоит об этом написать:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:20 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
To GuDVin Я вроде сказал другой вариант ... rs.AddNew Debug.Print rs!id ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:21 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Спасибо, но хотелось обойтись без ADO. Впрочем, вариант интересный... Спасибо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:33 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Вариант Serge Gavrilov работает и в DAO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:38 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
а в DAO rs.AddNew никто не отменял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:40 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Судя по тому, что решение, типа одна строка с какой-нить функцией никто не предлагает, видимо и нет такого счастья... Все спасибо... Будем юзать ADO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:42 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
поиск строки с параметрами добавленной строки может не всегда привести к нужному результату (если есть строки отличающиеся только Id'ом). сам себе ответил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:45 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Это как же? Скорее вопрос поставил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 11:48 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Если >> GuDVin: Использованиt ADO.Record set и Max(Id) нежелательно то может быть поможет Last(Id)? Она вроде для того и заточена. Попробовал, работает и при добавлении через запрос и через rst.AddNew... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 15:16 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Last плох по двум причинам: 1. В таблице без order by - порядок сортировки не гарантирован. Тогда уже лучше Max. 2. За время от добавки записи до получения Last (или Max) другой юзер может создать еще одну запись, и тогда будет получен его ID, а не наш. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 15:20 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
значит перд инсертом блокировать таблицу инсерт вопрошать разблокировать но.... если есть строки отличающиеся только Id'ом то только через рекордсет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 15:25 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
2 Владимир Саныч: 1. А функции Last не по барабану порядок сортировки? Она выбирает последнюю запись в хронолическом порядке. Хэлп: You use the First or Last functions to return the first or last record in the group you are performing calculations on. These functions return the first or last record as it was entered in chronological order. Sorting the records has no effect on these functions. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 15:32 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
You can use the DFirst and DLast functions to return a random record from a particular field in a table or query when you simply need any value from that field. Use the DFirst and DLast functions in a in a macro, module, query expression, or calculated control on a form or report. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 15:37 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
это я погорячилась наверное может Last в запросе таки правильно работает в отличии от DLast вопрос: зачем плодить записи которые отличаются только AutoNumberом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 15:46 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
2 TatianaT Абстрагируясь от вопроса о том, зачем это нужно... Я попробовал поиграть с Last в запросе и DLast из кода - результат одинаковый, обе функции всегда возвращают данные из последней добавленной записи. А зачем, решать не мне :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 16:05 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
а на каком количестве записей игрался? И в каком Акксесе? а вот это You can use the DFirst and DLast functions to return a random record from a particular field in a table or query when you simply need any value from that field. Use the DFirst and DLast functions in a in a macro, module, query expression, or calculated control on a form or report. взято из хелпа А97 я такое дело очень давно наблюдала в А97 на больших обьёмах и когда записи не подряд а в разнобой были а с Last вроде проблем не было а вопрос зачем плодить записи которые отличаются только AutoNumberом? был для автора топика хотя разные ситуации бывают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 16:14 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
2Hummer для SQL есть @@Identy (если я правильно написал) а для трггеров применени здесь очень хорошо описано у Senin(a) поищи по-моему тебе будет в тему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 16:21 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
2 iska:\r /topic/58 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 16:38 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
вот и я о том же Саныч это был А97 ? и таблица в А97 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 16:45 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Там, где две строки попали не на свое место, это был Access 2. :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 16:49 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
2 вадя Я в курсе, что для SQL есть @@identity (именно так и пишется, других не знаю) - но в простом мдб на аксесовских табличках это работать не будет - чего, впрочем, никто и не обещал:) Про тригеры тоже в курсе - как потом и написал, что примеры есть - просто мой ответ это только уточнение к ответу Хам трамвайный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2003, 17:39 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
2 Владимир Саныч и TatianaT Мы, по-моему, о разном говорим... Я полностью согласен с вами по поводу первичных ключей, сортировки, отсутствия сортировки и т.п. Разговор только о получении значения из одной (!) последней (по времени)добавленной и незатертой записи, для чего и служит функция Last. С утра почитал ваши посты. Чтобы подтвердить свою точку зрения: Забил в цикле в таблицу 100000 записей. Стирал, добавлял записи, удалял из добавленных и добавлял на их место. Запрос (SELECT Last(Id) FROM T) ВСЕГДА возвращает значение Id из последней добавленной записи. Ну такое назначение у функций First и Last. Если есть пример, когда ф-ция Last не возвращает значение из последней записи, был бы рад получить описание такой ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2003, 06:29 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
1.При работе через ADO можно использовать @@identity для табличек в mdb 2.Все равно работа через рекордсет - самый быстрый вариант ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2003, 07:44 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
повторяю в каком Акксесе эксперементировал? я такое дело очень давно (2,5 года назад) наблюдала в А97 с DLast на больших обьёмах и когда записи не подряд а в разнобой были а с Last вроде проблем не было (не помню просто насчёт Last т.к мне нужно было узнавать из кода, а из кода только DLast) а вот это You can use the DFirst and DLast functions to return a random record from a particular field in a table or query when you simply need any value from that field. Use the DFirst and DLast functions in a in a macro, module, query expression, or calculated control on a form or report. взято из хелпа А97 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2003, 07:53 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
2Hummer Я в курсе, что для SQL есть @@identity (именно так и пишется, других не знаю) - но в простом мдб на аксесовских табличках это работать не будет это будет работать, будет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2003, 08:15 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Аcc 02, про DLast я и не обмолвился. Нечего обсуждать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2003, 08:36 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
2 Артист Был не прав. Дважды не прав - проверял в DAO - возвращает 0, в ADO - всё работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2003, 09:06 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Из хелпа: The First and Last functions are analogous to the MoveFirst and MoveLast methods of a DAO Recordset object. They simply return the value of a specified field in the first or last record, respectively, of the result set returned by a query. Because records are usually returned in no particular order (unless the query includes an ORDER BY clause), the records returned by these functions will be arbitrary. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2003, 10:51 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Похоже, я понял, откуда у нашего спора ноги растут... MORE INFORMATION The Remarks section of the Help File topic, "First, Last Functions" incorrectly states that unless the query includes and ORDER BY clause, the order of records returned will be arbitrary . The correct information is that the order of records returned by the First() and Last() functions is not affected by the ORDER BY clause . Источник: support.microsoft.com/default.aspx?scid=kb;en-us;189391 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2003, 12:49 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Там же: The First(), Last(), DFirst(), and DLast() functions ignore sort orders and indexes, and primary keys. These functions are intended to return data from the first or last undeleted record entered into the table , not from the first or last record in a given sort order. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2003, 12:51 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Признаю свою неправоту. Сделал два запроса. SELECT s FROM a ORDER BY s; five four one three two SELECT Last(s) AS LastOfs FROM b; five Люди, пользоваться First и Last опасно, они игнорируют ORDER BY! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2003, 13:04 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Но!!! По-прежнему остается проблема с другим юзером, который мог тем временем добавить другую запись (или стереть нашу). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2003, 13:05 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
Так всётаки по варианту, например который Хам привёл: Код: plaintext 1. 2. 3. 4. 5. если в многопользовательской базе, то ошибётся @@identity при одновременном INSERTе другого юзера, или она умна, чтоб вернуть тока из своего Connection ?? Ну а как вы предложите при вставке нескольких записей возвратить их несколько ID ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2003, 11:13 |
|
||
|
Получение значения AutoNumber добавленной записи
|
|||
|---|---|---|---|
|
#18+
если в многопользовательской базе, то ошибётся @@identity при одновременном INSERTе другого юзера, или она умна, чтоб вернуть тока из своего Connection ?? Только из своего. Ну а как вы предложите при вставке нескольких записей возвратить их несколько ID ?? Я предложу операции вставки проводить через Recordset. Если, конечно, речь идет о mdb. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2003, 11:43 |
|
||
|
|

start [/forum/topic.php?all=1&fid=45&tid=1679548]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
89ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 447ms |

| 0 / 0 |
