powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работаем с VB+ADO+Access
10 сообщений из 10, страница 1 из 1
Работаем с VB+ADO+Access
    #32670634
DionX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упрощённый смысл такой.
Есть таблица tadle1. Есть в ней поля:
field1 key (access'овский счетчик)
field2 text
Коннектимся к базе через ADO. Активное соединение устанавливаем CN.
Далее:
Код: plaintext
CN.Execute "insert into tadle1 (field2) values ('абра-катабра')"
Как узнать значение field1 для новой строки? Вообще интересует любой способ вставки строк в таблицу с отслеживанием значений ключевого поля.

И ещё. Как обнулить access'овский счётчик? Т.е.: было в таблице пять строк. Удалили их все. Добавляем новую строку, значение поля, с типом данных Счетчик становится равным 6, а нужно чтоб единице.
...
Рейтинг: 0 / 0
Работаем с VB+ADO+Access
    #32670668
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по поводу обнуления - сервис - сжать/восстановить после этого записи физ удаляются из бд соответвенно сбрас и счетчик
по поводу значение ключа ( ИМХО) можно сделать запрос типа
select max(id)+1 from T1 где id - ключ поле.
...
Рейтинг: 0 / 0
Работаем с VB+ADO+Access
    #32670673
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Public tadle1 As ADODB.Recordset\'.....................................Set tadle1 = New ADODB.RecordsetWith tadle1    .ActiveConnection = CN    .Source = "tadle1"    .CursorType = adOpenKeyset    .LockType = adLockOptimistic    .CursorLocation = adUseServer    .Open , , , , adCmdTableDirectEnd With\'.....................................tadle1.AddNewtadle1field1 = tadle1!field1 \'тут узнали значение счётчикаtadle1.Update "field2", "абра - катабра" \'тут добавили
Как отформатирован этот код?
...
Рейтинг: 0 / 0
Работаем с VB+ADO+Access
    #32670688
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukeпо поводу обнуления - сервис - сжать/восстановить после этого записи физ удаляются из бд соответвенно сбрас и счетчик
по поводу значение ключа ( ИМХО) можно сделать запрос типа
select max(id)+1 from T1 где id - ключ поле.сжать-восстановить - абсолютно согласен.
по поводу значения ключа - абсолютно НЕ согласен.
во-первых потому, что работать могут несколько пользователей - и между запросом на вставку и запросом на селект могут быть запросы на вставку от других пользователй, а во-вторых потому, что счетчик может иметь не последовательные значения, а например случайные.
на мой взгляд, единственный способ - это вторым запросом искать только что вставленную запись, используя условие Where по ключевым полям. Хуже, если счетчик и есть то самое ключевое поле... Тогда, на мой взгляд, единственный способ - это использовать для вставки объект Recordset.
...
Рейтинг: 0 / 0
Работаем с VB+ADO+Access
    #32670702
DionX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
большое спасибо всем желающим помочь. Спасибо за подсказку как обнулить счетчик. По поводу вставки данных, все идеи высказанные здесь уже сам ранее перебрал, но это всё ни то. Как заметил Hibernate, остаётся только последующий запрос... Жаль. :(
...
Рейтинг: 0 / 0
Работаем с VB+ADO+Access
    #32670759
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по поводу счетчика если исползовать код репликации и генерить новый guid.
насчета аксесса не знаю но на скуле прокатывает на ура.
...
Рейтинг: 0 / 0
Работаем с VB+ADO+Access
    #32670780
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DionXбольшое спасибо всем желающим помочь. Спасибо за подсказку как обнулить счетчик. По поводу вставки данных, все идеи высказанные здесь уже сам ранее перебрал, но это всё ни то. Как заметил Hibernate, остаётся только последующий запрос... Жаль. :(
если не пользоваться объектом Recordset, то без второго запроса не обойтись никак. А вот сам второй запрос - есть еще вариант запускать оба запроса в транзакции, чтобы гарантировать что никто между ними не вклинился, тогда все можно упростить - если известно, что счетчик последовательный, то
Select max(счетчик) From tadle1
или если счетчик - случайное значение, то например можно выкрутится через поле типа Date, в которое вставлять по умолчанию Now() а потом что-то вроде
Select счетчик From tadle1 Where CreateDate = (Select max(CreateDate) From tadle1)

как-то так.
...
Рейтинг: 0 / 0
Работаем с VB+ADO+Access
    #32670893
Фотография PA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В jet 4.0 есть фишка - @@identity:

Код: plaintext
1.
CN.Execute "insert into tadle1 (field2) values ('абра-катабра')"
Debug.Print "Счётчик:";CN.Execute("select @@identity")( 0 )
...
Рейтинг: 0 / 0
Работаем с VB+ADO+Access
    #32670974
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PAВ jet 4.0 есть фишка - @@identity:

Код: plaintext
1.
CN.Execute "insert into tadle1 (field2) values ('абра-катабра')"
Debug.Print "Счётчик:";CN.Execute("select @@identity")( 0 )


и это работает! спасибо!
...
Рейтинг: 0 / 0
Работаем с VB+ADO+Access
    #32671076
DionX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О! Ничтяг! Спасибо. РАВ jet 4.0 есть фишка - @@identity
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Работаем с VB+ADO+Access
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]