powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Изменение данных в таблице программно
5 сообщений из 5, страница 1 из 1
Изменение данных в таблице программно
    #32828255
Orlic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.
Столкнулся с до безобразия простой задачкой, но за неимением опыта и времени, не знаю как решить.

AccessXP, MDB

Есть Таблица, в ней среди прочих полей - поле INN (числовой, двойное целое). Из 25000 записей 5000 имеют в нем 0. Хотелось бы присвоить им уникальные значения, например, с 1 по 5001. Для этого делаю следующее:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Private Sub ZeroINN_Click()

Dim i As Integer
Dim strSelect As String
Dim rst As New ADODB.Recordset

' это есть счетчик, который мы инкрементируем и присваиваем полю INN
i =  0 

'строка - запрос на выборку именно тех записей, у которых поле INN равно 0
strSelect = "SELECT DISTINCT name, INN, KPP " & _
            "FROM REESTR " & _
            "WHERE ((Name Is Not Null) And (INN = 0)) " & _
            "ORDER BY NAME"

' теперь собственно сам рекордсет для выборки этих записей и изменения
With rst
    .Open strSelect, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

' встали на первое значение
    .MoveFirst

' и шагом пока не упремся в конец
    Do While Not .EOF

' изменяем счетчик на 1 (разве inc(i) здесь не работает?)
        i = i +  1 

' присвоили значение - либо str(i)? не знаю, что именно
        ![INN] = i

' сохранили изменение
        .Update

' перешли на следующую строку выборки
        .MoveNext
    Loop
   
End With
rst.Close
Set rst = Nothing
MsgBox "Изменение есть"
End Sub

При выполнении кода - ошибка:
"Обновление поля невозможно. База данных или объект доступны только для чтения."

Вручную все редактировать можно!!!
В чем ошибка?
...
Рейтинг: 0 / 0
Изменение данных в таблице программно
    #32828321
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я с АДО не работаю, но знаю, что в ДАО синтаксис обновления рекордсета выглядит так
Код: plaintext
1.
2.
Recordset.Edit
...
Recordset.Update
Вобoем посмотри справку по АДО (у меня справка загнулась)
...
Рейтинг: 0 / 0
Изменение данных в таблице программно
    #32828330
Фотография Svetlana_613
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это mdb, то должно быть вот так где-то

Private Sub ZeroINN_Click()

Dim i As Integer
Dim strSelect As String
Dim rst As New DAO.Recordset

' это есть счетчик, который мы инкрементируем и присваиваем полю INN
i = 0

'строка - запрос на выборку именно тех записей, у которых поле INN равно 0
strSelect = "SELECT name, INN " & _
"FROM REESTR " & _
"WHERE (not isnull(Name)) And (nz(INN,0) = 0) " & _
"ORDER BY NAME"

' теперь собственно сам рекордсет для выборки этих записей и изменения
set rst=Currentdb.openRecordset(strSelect)

' встали на первое значение
rst.movefirst

' и шагом пока не упремся в конец
Do while not rst.eof()

' изменяем счетчик на 1 (разве inc(i) здесь не работает?)
i = i + 1

rst.edit

' присвоили значение - либо str(i)? не знаю, что именно
rst![INN] = i

' сохранили изменение
rst.Update

' перешли на следующую строку выборки
rst.MoveNext
Loop

rst.Close
Set rst = Nothing
End Sub

Офф:
Поздравляю с юбилейным постом :-)

Thks/Regards
Svetlana :-)
...
Рейтинг: 0 / 0
Изменение данных в таблице программно
    #32828411
Orlic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Svetlana_613Если это mdb, то должно быть вот так где-то
Код: plaintext
1.
2.
3.
4.
5.
Private Sub ZeroINN_Click()

Dim i As Integer
Dim strSelect As String
Dim rst As New DAO.Recordset 


пришлось подключать Microsoft DAO 3.5, так как до этого я работал с ADO... А что, на ADO никак нельзя сделать?
Svetlana_613
'Офф:
Поздравляю с юбилейным постом :-)

Thks/Regards
Svetlana :-)

спасибо, предлагаешь сегодня отметить это?:-)))
...
Рейтинг: 0 / 0
Изменение данных в таблице программно
    #32828474
Я думаю, что если из запроса DISTINCT убрать, то всё должно получиться. Запрос-то необновляемый выходит.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Изменение данных в таблице программно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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