Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / помогите выгрузить из памяти adodc и recordset / 19 сообщений из 19, страница 1 из 1
28.01.2009, 09:21
    #35781676
Vadim111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите выгрузить из памяти adodc и recordset
Всем привет. Помогите, уже мозг сломал.
Есть форма, на форме грид и 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
28.01.2009, 11:00
    #35781990
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите выгрузить из памяти adodc и recordset
Выкинуть ADODC — он базу не отпустит, а убить его можно только выгрузкой формы.
Можно попробовать сделать Adodc.ConnectionString = "", но вряд ли поможет.
...
Рейтинг: 0 / 0
28.01.2009, 11:37
    #35782144
Vadim111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите выгрузить из памяти adodc и recordset
пробовал, не отпускает((
альтернативные способы есть? Подскажите?
...
Рейтинг: 0 / 0
28.01.2009, 11:38
    #35782148
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите выгрузить из памяти adodc и recordset
Уже подсказал — выкинуть ADODC и использовать ADODB.Connection.
...
Рейтинг: 0 / 0
28.01.2009, 11:49
    #35782183
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите выгрузить из памяти adodc и recordset
Попробуй воспользоваться библиотекой ADO. Создай ADODB.Recordset и используй его в качестве источника данных.
...
Рейтинг: 0 / 0
28.01.2009, 12:19
    #35782283
Vadim111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите выгрузить из памяти adodc и recordset
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
28.01.2009, 12:55
    #35782438
Vadim111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите выгрузить из памяти adodc и recordset
в предыдущем разобрался - синтаксис)
теперь новая ошибка
provider cannot be found
...
Рейтинг: 0 / 0
28.01.2009, 13:26
    #35782577
Vadim111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите выгрузить из памяти adodc и recordset
в итоге разобрался с подключением, пришёл к тому же самому. Народ! Не бросайте на полпути,
как теперь отключить 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
28.01.2009, 13:31
    #35782598
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите выгрузить из памяти adodc и recordset
Код: plaintext
If Dir(path_c) <> "" Then Kill (path_c) ' вот здесь не даёт доступ

так а зачем ты саму базу то пытаешься удалить перед использованием? логика странная.
а вообще проверь, может ты в самом акцесе эту базу открыл или процесс какой подвис.
...
Рейтинг: 0 / 0
28.01.2009, 13:33
    #35782611
Vadim111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите выгрузить из памяти adodc и recordset
я там пропустил код, который копирует с фтп обновлённый файл
...
Рейтинг: 0 / 0
28.01.2009, 13:42
    #35782647
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите выгрузить из памяти adodc и recordset
После работы с базой нужно сделать
Код: plaintext
1.
con.Close
Set con = Nothing
...
Рейтинг: 0 / 0
28.01.2009, 13:44
    #35782655
Vadim111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите выгрузить из памяти adodc и recordset
тогда в первый раз при загрузке будет писать ошибку
operation is not allowed when object is closed - понятно, потому что подключение ещё не установлено.
...
Рейтинг: 0 / 0
28.01.2009, 14:09
    #35782751
Vadim111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите выгрузить из памяти adodc и recordset
всё,разобрался.
объявил 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
28.01.2009, 14:26
    #35782808
Vadim111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите выгрузить из памяти adodc и recordset
и последнее - проверка открыто ли подключение)
If con.State = 1 Then
con.Close
Set con = Nothing
End If
...
Рейтинг: 0 / 0
28.01.2009, 14:30
    #35782827
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите выгрузить из памяти adodc и recordset
разберитесь со своими коннектами к базе , где и когда они создаются и выключаются:

Код: 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
29.01.2009, 11:17
    #35784778
Vadim111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите выгрузить из памяти adodc и recordset
разобрался
теперь вопрос, почему теперь при изменении в гриде значения в ячейке, значение в БД автоматически не обновляется? С какими параметрами устанавливать соединение?
...
Рейтинг: 0 / 0
29.01.2009, 13:18
    #35785308
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите выгрузить из памяти adodc и recordset
если ты используешь блокировку adLockBatchOptimistic, то в конце редактирования ты должен позаботиться сам об апдейте всех измененных записей:

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


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