Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];

Вниз

Как в Access узнать Id (значение поля счетчика) новой записи   Найти похожие ветки 

 
AFROLOV   (2002-04-16 17:25) [0]

Как в Access узнать Id (значение поля счетчика) только что вставленной записи?

Заранее спасибо.


 
aus   (2002-04-17 01:36) [1]

Поле счетчика будет иметь значение после Post новой записи (CursorLocation = clUseServer, CursorType = ctKeyset, возможны варианты), поэтому если нужно иметь это значение сразу после добавления записи, придется сразу же и Post вызвать.


 
AFROLOV   (2002-04-17 10:40) [2]

А примерчика не найдется. Я раньше с БД почти не работал.


 
AFROLOV   (2002-04-17 16:49) [3]

???


 
AlexMey   (2002-04-17 16:57) [4]

Можно сделать так -
занести данные, а затем выполнить
SELECT MAX([Id]) FROM [таблица]


 
AlexMey   (2002-04-17 17:02) [5]

А вообще, я всех отговариваю использовать identity для первичного ключа, все минусы очень долго перечислять.
лучше так:
сначала выполняешь -
SELECT MAX([Id])+1 as newCount FROM [таблица]
теперь newCount и будет тем самым уникальным идентификатором для новой записи.
А затем - INSERT INTO [таблица] (Id,...) VALUES (newCount,...)
И вся любовь


 
Anatoly Podgoretsky   (2002-04-17 17:02) [6]

И получить ИД другого пользователя


 
AFROLOV   (2002-04-17 17:23) [7]

А если на таблицу наложить блокировку на запись?


 
wicked   (2002-04-17 19:44) [8]


> А вообще, я всех отговариваю использовать identity для первичного
> ключа

и совсем зря - он для того и предназначен... только я говорю об identity в mssql, а не об autoincrement в access"е... это две большие разницы...


 
AFROLOV   (2002-04-18 14:44) [9]

А можно об AUTOINCREMENT поподробнее?


 
wicked   (2002-04-18 14:54) [10]

ну, насчёт двух разниц - это я перегнул... :)
просто access позволяет делать с autoincrement-полями штуки, которые просто недопустимы... например, мне встречались грабли, когда он при вставке новой записи позволял подставлять своё значение в автоинкрементное поле... пока я до этого додул - 2 дня прошло... так что использовать их надо осторожно и постоянно помнить о возможных граблях...


 
Anatoly Podgoretsky   (2002-04-18 14:55) [11]

AUTOINCREMENT это и есть (значение поля счетчика) а у тебя вопрос, как его получить, может в Акцесс есть идентификатор аналогичный identity


 
sniknik   (2002-04-18 15:46) [12]

вообщето есть и даже называется так же :-)
SELECT @@IDENTITY


 
AFROLOV   (2002-04-18 16:10) [13]

Почему этот код не работает ? как правильно использовать @@IDENTYTY?

ADOQuery.SQL.Clear();
SQLStr:="Insert into Paterns (PaternName, PaternFileName, PaternComments) Values(""+pName+"",""+ExtractFileName(FName)+"",""+pComments+"")";
ADOQuery.SQL.Add(SQLStr);
SQLStr:="select @@IDENTYTY as "Identity";";
ADOQuery.SQL.Add(SQLStr);
ADOQuery.ExecSQL();


 
Anatoly Podgoretsky   (2002-04-18 16:21) [14]

А разве можно сразу два предложения?, тем более что второе требует применения метода Open


 
AFROLOV   (2002-04-18 17:08) [15]

Я раньше с базами не работал. Как правильно надо?


 
sniknik   (2002-04-18 17:14) [16]

по порядку сначала перый, орен слозе и второй сразу. Access пакеты как MSSQL не поддерживает


 
sniknik   (2002-04-18 17:17) [17]

и еще у тебя ошибка синтаксиса пишешь @@IDENTYTY
надо @@IDENTITY


 
Anatoly Podgoretsky   (2002-04-18 17:32) [18]

Разделить на два запроса, первый .ExexSQL, а второй .Open
К сожалению именно с акцесс и адо точно помочь не могу, не использую, а у них свои особенности.


 
Anatoly Podgoretsky   (2002-04-18 17:34) [19]

Разделить на два запроса, первый .ExeсSQL, а второй .Open
К сожалению именно с акцесс и адо точно помочь не могу, не использую, а у них свои особенности.
Дополнение к sniknik © (18.04.02 17:14)
Для первого .Open делать нельзя, только ExeсSQL и соответственно наоборот


 
AFROLOV   (2002-04-18 18:00) [20]

Всем большое спасибо.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.05.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.005 c
1-49988
Дмитрий000
2002-04-30 10:07
2002.05.16
Передача параметров в DLL


1-49989
Destroyer
2002-04-30 11:55
2002.05.16
Обращение к колонке в Excel


1-49998
SB.John
2002-04-30 13:32
2002.05.16
CBuilder и модули.


3-49858
Chuvi
2002-04-19 11:53
2002.05.16
Как использовать LIKE , в запросе для SQL- сервера ?


1-49951
VJar
2002-05-04 01:41
2002.05.16
Чтение текстового файла online





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский