powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / помогите выгрузить из памяти adodc и recordset
19 сообщений из 19, страница 1 из 1
помогите выгрузить из памяти adodc и recordset
    #35781676
Vadim111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Помогите, уже мозг сломал.
Есть форма, на форме грид и adodc источник данных и кнопочка "загрузить"
при нажатии на кнопочку с ФТП скачивается база access и таблица из неё выводится в грид:
формирую подключение :

form.Adodc.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path_c & ";Persist Security Info=False"

form.Adodc.RecordSource = "SELECT * FROM [table1]"

ну и затем вывод в грид

TDBGrid1.DataSource = Adodc
TDBGrid1.Refresh
.

При повторном нажатии кнопочки нужно убить с жёсткого диска базу, скачать новую и опять вывести в грид данные. Получается только если unload form, kill (path) и опять load.
Посоветуйте, как граммотно отключить?
...
Рейтинг: 0 / 0
помогите выгрузить из памяти adodc и recordset
    #35781990
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выкинуть ADODC — он базу не отпустит, а убить его можно только выгрузкой формы.
Можно попробовать сделать Adodc.ConnectionString = "", но вряд ли поможет.
...
Рейтинг: 0 / 0
помогите выгрузить из памяти adodc и recordset
    #35782144
Vadim111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробовал, не отпускает((
альтернативные способы есть? Подскажите?
...
Рейтинг: 0 / 0
помогите выгрузить из памяти adodc и recordset
    #35782148
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже подсказал — выкинуть ADODC и использовать ADODB.Connection.
...
Рейтинг: 0 / 0
помогите выгрузить из памяти adodc и recordset
    #35782183
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй воспользоваться библиотекой ADO. Создай ADODB.Recordset и используй его в качестве источника данных.
...
Рейтинг: 0 / 0
помогите выгрузить из памяти adodc и recordset
    #35782283
Vadim111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Private Sub Command1_Click()

Dim rs As New ADODB.Recordset
Dim con As New ADODB.Connection

con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path_c
на это строке вылазит ошибка - не выполнена проверка подлинности

With rs
.ActiveConnection = con
.CursorLocation = adUseClient
.CursorType = adOpenDynamic
.LockType = adLockBatchOptimistic
.Open "SELECT * FROM [presence" & k & "]"
End With
...
Рейтинг: 0 / 0
помогите выгрузить из памяти adodc и recordset
    #35782438
Vadim111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в предыдущем разобрался - синтаксис)
теперь новая ошибка
provider cannot be found
...
Рейтинг: 0 / 0
помогите выгрузить из памяти adodc и recordset
    #35782577
Vadim111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в итоге разобрался с подключением, пришёл к тому же самому. Народ! Не бросайте на полпути,
как теперь отключить adodb?

Private Sub Command1_Click()

Dim rs As New ADODB.Recordset
Dim con As New ADODB.Connection

If Dir(path_c) <> "" Then Kill (path_c) ' вот здесь не даёт доступ



With con
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path_c & ";Persist Security Info=False"
.Mode = adModeReadWrite
.CursorLocation = adUseClient
.Open
End With

With rs
.ActiveConnection = con
.CursorLocation = adUseClient
.CursorType = adOpenDynamic
.LockType = adLockBatchOptimistic
.Open "SELECT * FROM [presence" & k & "]"
End With

TDBGrid1.DataSource = rs

End If
End Sub
...
Рейтинг: 0 / 0
помогите выгрузить из памяти adodc и recordset
    #35782598
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
If Dir(path_c) <> "" Then Kill (path_c) ' вот здесь не даёт доступ

так а зачем ты саму базу то пытаешься удалить перед использованием? логика странная.
а вообще проверь, может ты в самом акцесе эту базу открыл или процесс какой подвис.
...
Рейтинг: 0 / 0
помогите выгрузить из памяти adodc и recordset
    #35782611
Vadim111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я там пропустил код, который копирует с фтп обновлённый файл
...
Рейтинг: 0 / 0
помогите выгрузить из памяти adodc и recordset
    #35782647
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После работы с базой нужно сделать
Код: plaintext
1.
con.Close
Set con = Nothing
...
Рейтинг: 0 / 0
помогите выгрузить из памяти adodc и recordset
    #35782655
Vadim111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тогда в первый раз при загрузке будет писать ошибку
operation is not allowed when object is closed - понятно, потому что подключение ещё не установлено.
...
Рейтинг: 0 / 0
помогите выгрузить из памяти adodc и recordset
    #35782751
Vadim111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всё,разобрался.
объявил con и rs публичным

если кому нить понадобится:
Public con As New ADODB.Connection
Public rs As New ADODB.Recordset


Private Sub Command1_Click()

con.Close
Set con = Nothing

If Dir(path_c) <> "" Then Kill (path_c)
'потом идёт копирование новой базы в path_c и заново устанавливаем связь

With con
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path_c & ";Persist Security Info=False"
.Mode = adModeReadWrite
.CursorLocation = adUseClient
.Open
End With

With rs
.ActiveConnection = con
.CursorLocation = adUseClient
.CursorType = adOpenDynamic
.LockType = adLockBatchOptimistic
.Open "SELECT * FROM [presence" & k & "]"
End With

TDBGrid1.DataSource = rs

End Sub

единственное - первый запуск, как обработать его..
...
Рейтинг: 0 / 0
помогите выгрузить из памяти adodc и recordset
    #35782808
Vadim111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и последнее - проверка открыто ли подключение)
If con.State = 1 Then
con.Close
Set con = Nothing
End If
...
Рейтинг: 0 / 0
помогите выгрузить из памяти adodc и recordset
    #35782827
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разберитесь со своими коннектами к базе , где и когда они создаются и выключаются:

Код: plaintext
1.
Public con As New ADODB.Connection
Public rs As New ADODB.Recordset

перейдите на правильное описание:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public con As ADODB.Connection
Public rs As ADODB.Recordset

'в нужном вам месте открываете соединение
Set con = New ADODB.Connection
...
cn.Open
Set rs = New ADODB.Recordset
Set rc.ActiveConnection = con
...

'когда завершили работу, то закрываете
Set rs = Nothing
con.Close
Set con = Nothing
...
Рейтинг: 0 / 0
помогите выгрузить из памяти adodc и recordset
    #35784778
Vadim111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
разобрался
теперь вопрос, почему теперь при изменении в гриде значения в ячейке, значение в БД автоматически не обновляется? С какими параметрами устанавливать соединение?
...
Рейтинг: 0 / 0
помогите выгрузить из памяти adodc и recordset
    #35785308
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если ты используешь блокировку adLockBatchOptimistic, то в конце редактирования ты должен позаботиться сам об апдейте всех измененных записей:

Код: plaintext
1.
'после всех редактирований в гриде
rs.UpdateBatch
...
Рейтинг: 0 / 0
помогите выгрузить из памяти adodc и recordset
    #35785668
Vadim111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, разобрался.
мне тут подсказывают создавать подключение а потом закрывать его
проблема же в том, что его закрывать не в том же модуле надо
а скажем по нажатию кнопки, и обработчик кнопки уже не знает как называется подключение и не закрывает его. Как я понимаю, он висит в памяти но уже без имени.
...
Рейтинг: 0 / 0
помогите выгрузить из памяти adodc и recordset
    #35787383
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
переменная con должна быть в Public модуле и быть объявлена как Public
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / помогите выгрузить из памяти adodc и recordset
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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