Ну что за ..... Update

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Ну что за ..... Update

Сообщение MOV » 06.04.2004 (Вт) 9:53

'Вот такой код

Dim WithEvents Cn As ADODB.Connection
Dim WithEvents Rs1 As ADODB.Recordset
Dim Sour As String
Dim CSt As String

Private Sub Cn_ConnectComplete(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection)
Rs1.ActiveConnection = Cn
Rs1.Source = "IR61BLIN IR Details" ' таблица
End Sub

Private Sub Form_Load()
Set Cn = New ADODB.Connection
Set Rs1 = New ADODB.Recordset
Cn.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=sam_all_demo32"
Cn.Open
End Sub

Private Sub Command1_Click()
Dim s(0) As String * 19
Dim d(0) As String
Rs1.CursorType = adOpenKeyset
Rs1.LockType = adLockBatchOptimistic
Rs1.Open
Rs1.MoveFirst
Debug.Print Rs1.Fields("Unit Purchase Price").Value
Rs1.Fields("Unit Purchase Price").Value = "99999999" ' в принципе без разницы как обновлять
'Rs1![Unit Purchase Price] = "9999999" работают обе строки и .Value=... и Rs1.[...]=... , но только внутри программы, на самом деле ничего в таблице не меняется! :( Что может быть?
Rs1.Update
Debug.Print Rs1.Fields("Unit Purchase Price").Value
Rs1.Close
Cn.Close
End Sub

То есть debug.print показывает, что Value изменилось, но на самом деле в таблице все остается по старому! Что такое не пойму? :(
Работа через ODBC.
Сразу скажу, что с ключом adLockOptimistic recordset не открывается, поэтому использую adLockBatchOptimistic, но это, думаю, не главное.

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 06.04.2004 (Вт) 10:01

подозреваю, что не хватает rs1.edit перед присвоением нового значения
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 06.04.2004 (Вт) 10:19

на самом деле я бы посмотрел в сторону способа блокировки записей... она выставлена как пакетная оптимистическая (Rs1.LockType = adLockBatchOptimistic), по этому в данном случае нужно использовать не .Update, а .UpdateBatch
либо заменить .LockType на adLockOptimistic
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

MOV

Сообщение MOV » 06.04.2004 (Вт) 10:49

"...использовать не .Update, а .UpdateBatch..."
Это пробовал, но он не хочет пишет, Expected lexiacal element not found.
И получается так, что update работает только при блокировке Rs1.LockType = adLockBatchOptimistic и ни при какой больше, а если ставить просто Rs1.LockType = adLockOptimistic, то ни первый, нивторой Update вообще не работает, говорит все ту же ошибку. :cry:
А вот на счет Edit, тоже была мысль, но в свойствах Rs1 есть только свойство EditeMode, которое только для чтения и в ходе выполнения программы равно нулю (пробовал его менять, но ругается, что мол оно только для чтения). :? [/b]

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 06.04.2004 (Вт) 11:07

а если попробовать пессимистическую блокировку? или уже пробовал?

да, кстати, что за формат базы данных? и что за движок?
если это MS SQL Server (судя по строке подключения), то не должно подобного происходить... наверное :? .
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Re: MOV

Сообщение Rainbow » 06.04.2004 (Вт) 11:11

MOV писал(а): А вот на счет Edit, тоже была мысль, но в свойствах Rs1 есть только свойство EditeMode

совсем стара стала :oops: Нету его... Только AddNew остался...

А EditMode меняется, когда ты новое значение присваиваешь?
А еще - не пробовал исполнить прямо запрос? Тоже такая дребедень будет? Вот хотя бы так:
Код: Выделить всё
cn.execute "Your SQL Query"


Cyrax писал(а):да, кстати, что за формат базы данных? и что за движок?

эхх... все гораздо хуже... ты там, кстати, тоже участие принимал ;)
http://bbs.vbstreets.ru/viewtopic.php?t=6567
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 06.04.2004 (Вт) 14:09

База данных разработана ACCPAC-ом могу только сказать, и коннектится к ней могу только через ODBC. Формат данных... :cry: могу только сказать, что расширение файлов *.prd, хотя это ни о чем не говориит, могу скинуть пример таблицы с ее индексами :shock: , но не уверен, что ваш ODBC (если у вас он есть) ее поймает. По моему помимо настройки самого слайса нужен спец словарик с которым ODBC будет с ней работать.

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 06.04.2004 (Вт) 14:13

MOV писал(а):База данных разработана ACCPAC-ом могу только сказать, и коннектится к ней могу только через ODBC. Формат данных... :cry: могу только сказать, что расширение файлов *.prd, хотя это ни о чем не говориит, могу скинуть пример таблицы с ее индексами :shock: , но не уверен, что ваш ODBC (если у вас он есть) ее поймает. По моему помимо настройки самого слайса нужен спец словарик с которым ODBC будет с ней работать.

ну по идее должен быть специально разработанный ODBC-драйвер, или OLEDB-провайдер... и кто такой ACCPAC?
кажется, начинаю въезжать в суть проблемы...

вот ссылка... думаю, что-то должно помочь в решении твоей проблемы
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

MOV

Сообщение MOV » 06.04.2004 (Вт) 15:44

Да ссылка крутая. Спасибо. Надо покачать, посмотреть. Сейчас просто нет времени вникать, надо юзать то, что есть.
Но сейчас, думаю, что надо попробовать через DAO. Люди которые раньше работали с этой базой, говорят, что в DAO Update должен работать. Только не пойму как в нем подключаться к таблице через ODBC :?
Написал вот

Dim Db As DAO.Database
Dim Rs1 As DAO.Recordset



А что дальше? Где ConnectionString, тут его не видно? :oops: Двоешник, блин! :?
С DAO не работал.

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

MOV

Сообщение MOV » 06.04.2004 (Вт) 15:54

В общем, думаю эту тему можно закрыть по DAO спрошу в новой, может тоже кому пригодится.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList