Как "отвязать" ADODC от Базы?

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Alex404
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.09.2002 (Вс) 10:58

Как "отвязать" ADODC от Базы?

Сообщение Alex404 » 04.07.2003 (Пт) 13:35

Вопрос вызван недостаточным опытом работы с ADO (раньше все как-то DAO хватало).
Суть вопроса:
На моей форме довольно много ADODC объектов (15 кажется). Каждому сопоставлен свой DataCombo, который использует ADODC в качестве источника данных.
Прожка работает нормально, но на днях я глянул на индикаторы свича, когда все остальные клиенты были обесточены и увидел, что при запущеной программе сеть непрерывно гоняет данные по порту, хотя никаких манипуляций с базой оператор не производит.
Ну подозрение ессно на ADODC - он же с базой соединяется.
Вот и вопрос :
Как отсоединить ADODC от базы, но при этом сохранить списки данных в DataComb-ах.
Сегодня моя конструкция выглядит так:

SQL="...."
With Frm1.Adodc1
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=База.mdb" & _
";Mode=ReadWrite;Persist Security Info=False;"
.CursorLocation = adUseClient: .CursorType = adOpenStatic: .CommandType = adCmdText
.RecordSource = SQL
.Refresh
End With

Set DataCombo1.RowSource = Adodc1
DataCombo.ListField = "Поле1"

Спасибо.

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

Сообщение Cyrax » 04.07.2003 (Пт) 14:36

Создание отключенного набора записей

Код: Выделить всё
Dim strSQL As String
Dim rs As ADODB.Recordset

strSQL = "запрос"

' создание и инициализация обхекта Recordset
Set rs = New ADODB.Recordset
Set rs.ActiveConnection = "строка подключения к базе данных"
rs.CursorLocation = adUseClient
rs.LockType = adLockReadOnly
rs.CursorType = adOpenForvardOnly
rs.Open strSQL

' отключение
Set rs.ActiveConnection = Nothing

' передаем набор в ADODC
Set ADODC1.Recordset = rs

' освобождаем объектную переменную
Set rs = Nothing


Обновление отключенного набора записей

Код: Выделить всё
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Set rs.ActiveConnection = "строка подключения к базе данных"

' повторное открытие объекта Recordset
rs.Open ADODC.Recordset, "строка подключения к базе данных"

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

Welcome to IRC

Alex404
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 22.09.2002 (Вс) 10:58

Сообщение Alex404 » 04.07.2003 (Пт) 16:17

Спасибо Cyrax!
Изменение кода прожка пережила нормально! Осталось дождаться когда все свалят по домам и посмотреть на сетку...

Andrei_Kalich
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 05.08.2003 (Вт) 20:26
Откуда: Estonia

Сообщение Andrei_Kalich » 05.08.2003 (Вт) 20:32

у меня очень похожая проблема! тебе помогло это решение? у меня просто обмен данными продолжается даже если я закрываю рекордсет методом .Close! Правда проблема только если создавать курсор на стороне сервера. Но мне нужно как раз на сервере чтобы все оставалось, у меня и так сеть в мясо! А смотреть кто чем обменивается удобно фаервольчиком каким-нить. Я пользуюсь Kerio Personal Firewall www.kerio.com Так вот, у меня после вызова Update начинается дикий обмен данными с сервером на скорости 136кб/сек. При чем только на прием! отправляется тоже, но медленнее намного: 5кб/сек. Помогает только закрытие коннекшина. Что за байда? База у меня Access97.


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

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

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

    TopList