
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
11.05.2006, 13:32
|
|||
|---|---|---|---|
|
|||
Как определить Код следующей записи (Auto_Increment)? |
|||
|
#18+
Как определить ID ледующей записи в поле с стипом счетчик? У меня есть только один способ, но минус его в создании записи, которую необходимо удалять. strSQL = "INSERT INTO Таблица(Поле) VALUES('')" cnn.Execute strSQL, , adExecuteNoRecords strSQL = "SELECT @@IDENTITY" rst.Open strSQL, cnn, adOpenStatic, adLockBatchOptimistic MaxID = rst(0) MsgBox "MaxID" & MaxID rst.Close strSQL = "DELETE * FROM Таблица WHERE Код=" & MaxID cnn.Execute strSQL, , adExecuteNoRecords Есть ли более удобный и эффективный способ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.05.2006, 13:39
|
|||
|---|---|---|---|
|
|||
Как определить Код следующей записи (Auto_Increment)? |
|||
|
#18+
strSQL = "select max ID from Table " ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.05.2006, 13:40
|
|||
|---|---|---|---|
|
|||
Как определить Код следующей записи (Auto_Increment)? |
|||
|
#18+
strSQL = "select max(ID) from Table " так правильнее, а к результату прибавь еденицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.05.2006, 13:53
|
|||
|---|---|---|---|
|
|||
Как определить Код следующей записи (Auto_Increment)? |
|||
|
#18+
Так мне необходимо знать значение ID, которое получит новая запись до ее добавления. А если еще было произведено удаление зарписей, то счетчик будет иметь значение не на 1 больше последнего, а на единицу больше предшестующей записи, даже если она удалена. Тво код не подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.05.2006, 13:59
|
|||
|---|---|---|---|
Как определить Код следующей записи (Auto_Increment)? |
|||
|
#18+
У вас однопользовательское приложение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.05.2006, 13:59
|
|||
|---|---|---|---|
|
|||
Как определить Код следующей записи (Auto_Increment)? |
|||
|
#18+
ну в таком случае я бы поставил триггер на добавление.и пускай он у тебя пишет в отдельную табличку номер добавленной записи.это первое что мне пришло в голову.возможно есть и другие,более рациональные и простые способы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.05.2006, 14:35
|
|||
|---|---|---|---|
Как определить Код следующей записи (Auto_Increment)? |
|||
|
#18+
в FAQ по аксу такое было в теме про счетчики вопрос 8 вроде _____________________________________ А я хочу Брежнева, чтобы все было по прежнему... "Стволы" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.05.2006, 14:45
|
|||
|---|---|---|---|
Как определить Код следующей записи (Auto_Increment)? |
|||
|
#18+
Alexus_stavА если еще было произведено удаление зарписей, то счетчик будет иметь значение не на 1 больше последнего, а на единицу больше предшестующей записи, даже если она удалена. Да вы что такое говорите, люди? Счетчик никогда не сбрасывается и не уменьшается, иначе потерялся бы весь его смысл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.05.2006, 15:05
|
|||
|---|---|---|---|
Как определить Код следующей записи (Auto_Increment)? |
|||
|
#18+
Отвечая прямо на вопрос: Надо редактирование данных сделать на рекордсете. Тогда, после добавления, соответствующее поле рекордсета и будет содержать ID. Разумеется, это все надо оформить в одну транзакцию, тогда ничего удалять не придется - просто откатить транзакцию. Конструкции типа MAX() использовать очень нежелательно хотя-бы по той причине, что тогда надо блокировать всю таблицу от начала выборки MAX и до вставки новой записи. А вообще, этот вопрос - не простой. Все зависит от типа блокировки которую используете. Если вы используете автономную блокировку (упрощенно это когда до нажатия кнопки "сохранить" никакие изменения в БД не поступают), то надо иметь ID до вставки в базу данных. В оракле для этого используют SEQUENCE, в SQL-Server можно создать таблицу с двумя полями: "ID", "TableName". В ней и хранить очередное значение ID для каждой таблицы. Правда тут есть пара нюансов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.05.2006, 15:18
|
|||
|---|---|---|---|
Как определить Код следующей записи (Auto_Increment)? |
|||
|
#18+
Melkiades Alexus_stavА если еще было произведено удаление зарписей, то счетчик будет иметь значение не на 1 больше последнего, а на единицу больше предшестующей записи, даже если она удалена. Да вы что такое говорите, люди? Счетчик никогда не сбрасывается и не уменьшается, иначе потерялся бы весь его смысл. эт ты зря так думаешь, например в аксессе при сжатии базы (что делать рано или позно приходится чтобы удалить физически помеченные как удаленные записи) значение счетчика станосится равным максимальному не удаленному значению, т.е. если удалить последнюю запись сделать сжатие то можно опять создать запись с темже номером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.05.2006, 15:28
|
|||
|---|---|---|---|
Как определить Код следующей записи (Auto_Increment)? |
|||
|
#18+
barrabas Melkiades Alexus_stavА если еще было произведено удаление зарписей, то счетчик будет иметь значение не на 1 больше последнего, а на единицу больше предшестующей записи, даже если она удалена. Да вы что такое говорите, люди? Счетчик никогда не сбрасывается и не уменьшается, иначе потерялся бы весь его смысл. эт ты зря так думаешь, например в аксессе при сжатии базы (что делать рано или позно приходится чтобы удалить физически помеченные как удаленные записи) значение счетчика станосится равным максимальному не удаленному значению, т.е. если удалить последнюю запись сделать сжатие то можно опять создать запись с темже номером. Ну вообще-то я имел ввиду, что счетчик сам по себе никогда не уменьшится. И на оракле, и на сиквеле тоже можно искусственно сбросить сиквенс или идентити-поле. Но неужели кто-то в здравом уме будет это делать (сжимать/восстанавливать базу), когда в ней меняет данные кто-то еще? Полагаю, что нет, поэтому способ имеет право на жизнь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.05.2006, 17:37
|
|||
|---|---|---|---|
Как определить Код следующей записи (Auto_Increment)? |
|||
|
#18+
А какой способ то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.05.2006, 09:00
|
|||
|---|---|---|---|
Как определить Код следующей записи (Auto_Increment)? |
|||
|
#18+
MelkiadesНо неужели кто-то в здравом уме будет это делать (сжимать/восстанавливать базу), когда в ней меняет данные кто-то еще? Полагаю, что нет, поэтому способ имеет право на жизнь. А вы и не сможете сжать БД, когда она(БД) открыта другими пользователями или приложениями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=60&mobile=1&tid=2165879]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
157ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 265ms |
| total: | 475ms |

| 0 / 0 |
