powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ADODB проблема обновления поля в таблице
8 сообщений из 8, страница 1 из 1
ADODB проблема обновления поля в таблице
    #34404690
Pr0teus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работаю с базой DBC через ADODB. В коде программы произвожу последовательные обновления таблиц (см. код). По неизвестным причинам, когда дело доходит до третьей таблицы 46 записи нижеприведенный SELECT выдает ошибку [Microsoft][ODBC Visual FoxPro Driver]Record is not locked, причем выдает он ее только, если база находиться на сетевом диске, если на локальном, то все проходит нормально 8(

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
If (objRecordSet.State = adStateOpen) Then objRecordSet.Close
objRecordSet.Open "SELECT * FROM table3 WHERE mainid=" & nMAINID & " .AND. recid=" & nRECID, objDBCConnection, adOpenStatic, adLockOptimistic

If (Err <>  0 ) Then
   ' Ошибка 
   flagWasError = True
   Err.Clear
Else

   ' какой-то код...

   ' обновление полей
   objRecordSet.fields(strFldName).Value = XMLAttribute.Value
   objRecordSet.Update

   ' какой-то код...

End If

...
Рейтинг: 0 / 0
ADODB проблема обновления поля в таблице
    #34404730
Pr0teus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оказалось, что ошибка взводиться после выполнения

Код: plaintext
1.
2.
If (objRecordSet.State = adStateOpen) Then objRecordSet.Close


Но почему???
...
Рейтинг: 0 / 0
ADODB проблема обновления поля в таблице
    #34404919
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pr0teusОказалось, что ошибка взводиться после выполнения

Код: plaintext
1.
2.
If (objRecordSet.State = adStateOpen) Then objRecordSet.Close


Но почему???
Потому что если рекордсет уже открыт, его нельзя открыть еще раз.
...
Рейтинг: 0 / 0
ADODB проблема обновления поля в таблице
    #34404970
Pr0teus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да это понятно, не зря же я проверял. Тут не известно в чем проблема. Трассировка ничего не показывает. Не могу обновить данные и все 8( Может из-за того, что все происходит в одной большой транзакции. Еще раз повторяюсь, что ошибка выскакиевает только если работа идет с базой расположенной на сетевом диске, если на локальном, то все ок (потому и проглядел ее)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
If (objRecordSet.State = adStateOpen) Then objRecordSet.Close

'...

' а эта хрень выдает ошибку Record is not locked, хотя выборка проходит
objRecordSet.fields(strFldName).Value = XMLAttribute.Value
objRecordSet.Update


Думается во всем Novell виноват (((
...
Рейтинг: 0 / 0
ADODB проблема обновления поля в таблице
    #34410418
Программист Дёня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pr0teusДа это понятно, не зря же я проверял. Тут не известно в чем проблема. Трассировка ничего не показывает. Не могу обновить данные и все 8( Может из-за того, что все происходит в одной большой транзакции. Еще раз повторяюсь, что ошибка выскакиевает только если работа идет с базой расположенной на сетевом диске, если на локальном, то все ок (потому и проглядел ее)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
If (objRecordSet.State = adStateOpen) Then objRecordSet.Close

'...

' а эта хрень выдает ошибку Record is not locked, хотя выборка проходит
objRecordSet.fields(strFldName).Value = XMLAttribute.Value
objRecordSet.Update


Думается во всем Novell виноват (((



может так проверять

Код: plaintext
1.
If not (objRecordSet is Nothing) Then objRecordSet.Close
...
Рейтинг: 0 / 0
ADODB проблема обновления поля в таблице
    #34410424
Программист Дёня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист Дёня Pr0teusДа это понятно, не зря же я проверял. Тут не известно в чем проблема. Трассировка ничего не показывает. Не могу обновить данные и все 8( Может из-за того, что все происходит в одной большой транзакции. Еще раз повторяюсь, что ошибка выскакиевает только если работа идет с базой расположенной на сетевом диске, если на локальном, то все ок (потому и проглядел ее)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
If (objRecordSet.State = adStateOpen) Then objRecordSet.Close

'...

' а эта хрень выдает ошибку Record is not locked, хотя выборка проходит
objRecordSet.fields(strFldName).Value = XMLAttribute.Value
objRecordSet.Update


Думается во всем Novell виноват (((



а лучше так

Код: plaintext
1.
2.
3.
If not (objRecordSet is Nothing) Then
  objRecordSet.Close
  set objRecordSet=nothing
...
Рейтинг: 0 / 0
ADODB проблема обновления поля в таблице
    #34411907
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист Дёня
Код: plaintext
1.
If not (objRecordSet is Nothing) Then objRecordSet.Close


Не угадывайте. Дело не в отсутствии рекордсета. И если уж проверять то на State в любом случае нужно, перед вызовом Close.


2 Pr0teus
Если проблема с сетевой базой, попробуй таймаут изменить. Поставь анлимитед например.
connection.ConnectionTimeout=0
...
Рейтинг: 0 / 0
ADODB проблема обновления поля в таблице
    #34411955
Программист Дёня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Magnus23 Программист Дёня
Код: plaintext
1.
If not (objRecordSet is Nothing) Then objRecordSet.Close


Не угадывайте. Дело не в отсутствии рекордсета. И если уж проверять то на State в любом случае нужно, перед вызовом Close.


2 Pr0teus
Если проблема с сетевой базой, попробуй таймаут изменить. Поставь анлимитед например.
connection.ConnectionTimeout=0

ну, не знаю, тока с бд работал через Connection и Recordset, если рекорд соединят с бд, то при разрыве вылетает всё
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ADODB проблема обновления поля в таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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