Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.16;
Скачать: CL | DM;

Вниз

Как в 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.012 c
6-50058
Anar
2002-02-27 14:01
2002.05.16
Подключение к интернет.


1-49979
ymin
2002-04-22 11:42
2002.05.16
Вопрос


1-49915
Windeus
2002-05-03 08:49
2002.05.16
Extension in Savedialog


1-49959
Ptushenko Denis
2002-05-02 10:09
2002.05.16
Проблема с языками !!!!!!!


3-49825
DenK_vrtz
2002-04-12 13:35
2002.05.16
Не могу запустить инсталляцию Oracle 8.1.6.