Главная страница
    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.006 c
7-50143
Coalycat
2002-02-20 13:26
2002.05.16
преобразование данных


4-50157
star
2002-01-10 10:24
2002.05.16
Как вытащить текст из чужого RichEdit ?


1-50057
turonix
2002-05-02 15:33
2002.05.16
Как в подпрограмму передать динамический двумерный массив и вичис


14-50130
Sergo
2002-04-08 18:39
2002.05.16
CB5


1-49993
Jaguar
2002-04-30 10:36
2002.05.16
Создание компонентов





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский