Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перехват Id в Access 
:(
    Опции темы
nicka
Дата 7.7.2003, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 11.6.2003

Репутация: нет
Всего: 1



Как получить id последней записи таблицы в Access из модуля формы?

Срочнооо!!!
PM MAIL   Вверх
nicka
Дата 7.7.2003, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 11.6.2003

Репутация: нет
Всего: 1



Очень, очень срочно
Кто-нибудь!!!
PM MAIL   Вверх
cardinal
Дата 7.7.2003, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Вот это единственное, что я нашел. Как тут что я просто не помню и время сейчас особо нет. Может что поможет. mdb здесь это database, а PR - это Recordset. Работал я с Microsoft DAO 3.6. У PR есть метод MoveLast насколько я помню и помоему это и есть то, что тебе надо. Извини за такой небольшой примерчик, но просто времени сейчас нет, а этот проект мой старый что-то не заводится, недавно Windows переставлял просто smile.gif .

Код
Set PR = mdb.OpenRecordset("SELECT PubID FROM ArtMenu WHERE Name='" & List1(2).Text & "'")
PubIDNum = PR!PubID



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
nicka
Дата 8.7.2003, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 11.6.2003

Репутация: нет
Всего: 1



да но movelast перемещаеться по всему ecordset-ту, а это плохо, если таблица большая,
Нет так не годится

Неужели нет другого способа,
Например для QLServer-ра мне подсказали @@Identity - то что надо!
PM MAIL   Вверх
vickr
Дата 8.7.2003, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.5.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



В Access, насколько я знаю, аналогов @@Identity нет. Единственный выход, который я вижу - сразу после INSERT делать запрос SELECT MAX(id) FROM table, где id - есмь поле-счетчик в таблице table. По крайней мере, мне приходилось видеть ОЧЕНЬ много реализаций этой проблемы таким способом. Правда, это не означает, что порывшись хорошенько в документации, нельзя найти ничего более правильного - дело в том, что я сейчас дорабатываю чужую прогу, в которой даже при работе с SQL Server на каждом шагу встречается что-то вроде SELECT MAX(id) adv/91.gif , т.е. человек, который ее разрабатывал, про @IDENTITY и не слыхивал.
Вывод: ищите да обрящете!

PS: надежда умирает последней...
--------------------
Каждую секунду, тыкая в клавиши, мы давим насмерть не менее 1000 микробов =:)
PM MAIL   Вверх
cardinal
Дата 9.7.2003, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Цитата
да но movelast перемещаеться по всему ecordset-ту, а это плохо, если таблица большая


Не думаю, что по movelast мы прыгаем по каждому элементу recordset пока не дойдем до конца, так как это просто бред. Можно конечно попробовать на двух recordset`ах разных размеров, но предполагаю, что резулятат будет один и тот же -> константное время выполнения процедуры. Если это не так, то поправьте.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
nicka
Дата 9.7.2003, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 11.6.2003

Репутация: нет
Всего: 1



Цитата
Не думаю, что по movelast мы прыгаем по каждому элементу recordset пока не дойдем до конца, так как это просто бред. Можно конечно попробовать на двух recordset`ах разных размеров, но предполагаю, что резулятат будет один и тот же -> константное время выполнения процедуры. Если это не так, то поправьте.


Возможно так, просто в литературе такой метод не рекомендуется использовать часто да на больших таблицах
PM MAIL   Вверх
nicka
Дата 9.7.2003, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 11.6.2003

Репутация: нет
Всего: 1



vickr

Очень интересно, то что ты сказал, а я думала это только я так могу, поэтому искала другой выход у проффесианалов
Что ж max так max,
А может с recordset - movelast будет быстрее, ведь таблицы то растут не по дням а по часам?
И еще насчет max возможна ли ситуация, когда два пользователя практически одновременно сделают Insert, и тогда возвращаемое max-ом Id у них перепутается, а?

PM MAIL   Вверх
nicka
Дата 9.7.2003, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 11.6.2003

Репутация: нет
Всего: 1



Это очень интересно то , что ты сказал, я то думала что так только я могу, поэтому искала ответа у проффесионалов,
Что ж max так max , только может с Recordset - Movelast будет быстрее?

А еще может быть так, что 2 пользователя практически одновременно произведут Insert и тогда возвращение Id может перепутаться?
PM MAIL   Вверх
vickr
Дата 9.7.2003, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.5.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Цитата
А еще может быть так, что 2 пользователя практически одновременно произведут Insert и тогда возвращение Id может перепутаться?

Подозреваю, что теоретически в Access такое возможно. imho, он не поддерживает транзакций.
--------------------
Каждую секунду, тыкая в клавиши, мы давим насмерть не менее 1000 микробов =:)
PM MAIL   Вверх
nicka
Дата 9.7.2003, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 11.6.2003

Репутация: нет
Всего: 1



Цитата
imho


Что это?

Значит токое возможно теоретически?
А насколько часто это встречаеться практически?
Могу ли я это себе позволить сделать ?
PM MAIL   Вверх
vickr
Дата 9.7.2003, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.5.2003
Где: Санкт-Петербург

Репутация: нет
Всего: нет



In My Humble Opinion smile.gif
Цитата
А насколько часто это встречаеться практически?
Могу ли я это себе позволить сделать ?

Если и встречается, то очень редко. Уж точно реже, чем при использовании MoveLast после Insert-а. Как правило, Access не используется для настолько огромного числа пользователей, чтобы вероятность обсуждаемого события была достойна рассмотрения.
--------------------
Каждую секунду, тыкая в клавиши, мы давим насмерть не менее 1000 микробов =:)
PM MAIL   Вверх
nicka
Дата 9.7.2003, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 11.6.2003

Репутация: нет
Всего: 1



OK!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0532 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.