![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в Access узнать Id (значение поля счетчика) новой записи [D6, Access]
AFROLOV © (2002-04-16 17:25:00)Как в Access узнать Id (значение поля счетчика) только что вставленной записи?
Заранее спасибо.
AFROLOV (2002-04-18 18:00:00) [1]Всем большое спасибо.
Anatoly Podgoretsky (2002-04-18 17:34:00) [2]Разделить на два запроса, первый .ExeсSQL, а второй .Open
К сожалению именно с акцесс и адо точно помочь не могу, не использую, а у них свои особенности.
Дополнение к sniknik © (18.04.02 17:14)
Для первого .Open делать нельзя, только ExeсSQL и соответственно наоборот
Anatoly Podgoretsky (2002-04-18 17:32:00) [3]Разделить на два запроса, первый .ExexSQL, а второй .Open
К сожалению именно с акцесс и адо точно помочь не могу, не использую, а у них свои особенности.
sniknik (2002-04-18 17:17:00) [4]и еще у тебя ошибка синтаксиса пишешь @@IDENTYTY
надо @@IDENTITY
sniknik (2002-04-18 17:14:00) [5]по порядку сначала перый, орен слозе и второй сразу. Access пакеты как MSSQL не поддерживает
AFROLOV (2002-04-18 17:08:00) [6]Я раньше с базами не работал. Как правильно надо?
Anatoly Podgoretsky (2002-04-18 16:21:00) [7]А разве можно сразу два предложения?, тем более что второе требует применения метода Open
AFROLOV (2002-04-18 16:10:00) [8]Почему этот код не работает ? как правильно использовать @@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();
sniknik (2002-04-18 15:46:00) [9]вообщето есть и даже называется так же :-)
SELECT @@IDENTITY
Anatoly Podgoretsky (2002-04-18 14:55:00) [10]AUTOINCREMENT это и есть (значение поля счетчика) а у тебя вопрос, как его получить, может в Акцесс есть идентификатор аналогичный identity
wicked (2002-04-18 14:54:00) [11]ну, насчёт двух разниц - это я перегнул... :)
просто access позволяет делать с autoincrement-полями штуки, которые просто недопустимы... например, мне встречались грабли, когда он при вставке новой записи позволял подставлять своё значение в автоинкрементное поле... пока я до этого додул - 2 дня прошло... так что использовать их надо осторожно и постоянно помнить о возможных граблях...
AFROLOV (2002-04-18 14:44:00) [12]А можно об AUTOINCREMENT поподробнее?
wicked (2002-04-17 19:44:00) [13]
> А вообще, я всех отговариваю использовать identity для первичного
> ключа
и совсем зря - он для того и предназначен... только я говорю об identity в mssql, а не об autoincrement в access"е... это две большие разницы...
AFROLOV (2002-04-17 17:23:00) [14]А если на таблицу наложить блокировку на запись?
Anatoly Podgoretsky (2002-04-17 17:02:00) [15]И получить ИД другого пользователя
AlexMey (2002-04-17 17:02:00) [16]А вообще, я всех отговариваю использовать identity для первичного ключа, все минусы очень долго перечислять.
лучше так:
сначала выполняешь -
SELECT MAX([Id])+1 as newCount FROM [таблица]
теперь newCount и будет тем самым уникальным идентификатором для новой записи.
А затем - INSERT INTO [таблица] (Id,...) VALUES (newCount,...)
И вся любовь
AlexMey (2002-04-17 16:57:00) [17]Можно сделать так -
занести данные, а затем выполнить
SELECT MAX([Id]) FROM [таблица]
AFROLOV (2002-04-17 16:49:00) [18]???
AFROLOV (2002-04-17 10:40:00) [19]А примерчика не найдется. Я раньше с БД почти не работал.
aus (2002-04-17 01:36:00) [20]Поле счетчика будет иметь значение после Post новой записи (CursorLocation = clUseServer, CursorType = ctKeyset, возможны варианты), поэтому если нужно иметь это значение сразу после добавления записи, придется сразу же и Post вызвать.