Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Изменение данных в таблице программно / 5 сообщений из 5, страница 1 из 1
15.12.2004, 12:46:19
    #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
15.12.2004, 13:06:49
    #32828321
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение данных в таблице программно
Я с АДО не работаю, но знаю, что в ДАО синтаксис обновления рекордсета выглядит так
Код: plaintext
1.
2.
Recordset.Edit
...
Recordset.Update
Вобoем посмотри справку по АДО (у меня справка загнулась)
...
Рейтинг: 0 / 0
15.12.2004, 13:09:55
    #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
15.12.2004, 13:40:51
    #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
15.12.2004, 14:01:11
    #32828474
Изменение данных в таблице программно
Я думаю, что если из запроса DISTINCT убрать, то всё должно получиться. Запрос-то необновляемый выходит.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Изменение данных в таблице программно / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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