powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Access denied после закрытия ADO
6 сообщений из 6, страница 1 из 1
Access denied после закрытия ADO
    #32563589
polycarbonate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый!
Такое дело - из под VBA посредством ADO коннекчусь к FoxPro базе, делаю там что-то, потом закрываю коннект, закрываю рекордсет -

myRecordset.Close
Set myRecordset = Nothing
myConnection.Close
Set myConnection = Nothing

выхожу из своей программы.
Проблема в том, что база, с которой я работал остается недоступной вплоть до полного выхода из офис приложения
Т.е. пока я не закрою весь скажем Excel, до базы будет не добраться (Ассess denied).
Может кто сталкивался с таким, подскажите, плз!
...
Рейтинг: 0 / 0
Access denied после закрытия ADO
    #32563672
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Будет недоступной откуда?
С этого же приложения или извне?
...
Рейтинг: 0 / 0
Access denied после закрытия ADO
    #32564030
polycarbonate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
извне, из того же FoxPro например...
я так понимаю, что VBA не удаляет созданные объекты не смотря на то, что я их вроде как закрываю и убиваю ссылки на них.
(такое было замечено даже на обычных переменных типа Integer или Boolean - значения, которые они имели к концу работы сессии программы, доступны при следующем запуске программы...)
как с этим бороться?
...
Рейтинг: 0 / 0
Access denied после закрытия ADO
    #32564054
polycarbonate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЗЫ: на счет обычных переменных - это работает, когда они объявлены глобально, с локальными все Ok! А вот с объектами все хуже - локальны только ссылки на них, вот объекты и висят до одури, точнее до полного выхода...
...
Рейтинг: 0 / 0
Access denied после закрытия ADO
    #32624724
a1a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
a1a
Гость
День добрый!
Такое дело - из под VBA посредством ADO коннекчусь к FoxPro базе, делаю там что-то, потом закрываю коннект, закрываю рекордсет -

Уважаемый товарищ! Не мог бы ты выслать кусок кода как ты коннектишся к foxpro базе и закрываеш связь. Очень умоляю! Заранее спасибо! a1a@freemail.ru
...
Рейтинг: 0 / 0
Access denied после закрытия ADO
    #32624754
Фотография Jojo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
' ADO-соединение
Public Sub ADO_SQL1(NewName1 As String, SQL_str As String)

' Директория где находятся dbf файлы
def_dir = ActiveWorkbook.Path

Set ds = Workbooks("zt.xls").Sheets("Итого")
'ds.Range("A2:E5000").ClearContents

' создаем объект соединения
Set cnn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

' свойства соединения для работы с DBF
cnn.Provider = "Microsoft.Jet.OLEDB.4.0"
cnn.Properties("Extended Properties") = "dBase IV"
cnn.Properties("Data Source") = def_dir & "\"

'Set cnn = New ADODB.Connection
'cnn.Open "Driver={Microsoft dBASE Driver (*.dbf)};uid=;pwd=;database=" & def_dir & "\" & NewName1 & ";"

' открываем соединение
cnn.Open

'Открываем набор записей
rs.ActiveConnection = cnn

rs.Source = SQL_str
'rs.Source = "Select dt, ad, k, ak, smr from " & NewName1 & " WHERE (DT>='300000' and DT<='329999')ORDER BY dt,ad"
'rs.Source = "Select dt, ad, k, Sum(smr) from " & NewName1 & " GROUP BY dt,ad,k HAVING(DT>='300000' and DT<='329999') ORDER BY dt,ad"
rs.Open

k = 2
While Not IsEmpty(ds.Cells(k, 1).Value)
k = k + 1
Wend

If rs.EOF Then
'MsgBox "Файл не содержит записей !"
Else
' Крутим наборчик
ds.Activate
i = k
rs.MoveFirst
While Not rs.EOF

If rs.Fields("dt") <> "" Then
ds.Cells(i, 1).Value = rs.Fields("dt")
ds.Cells(i, 2).Value = rs.Fields("ad")
ds.Cells(i, 3).Value = rs.Fields("k")

' Флаг служит для для уменьшения параметров запроса - только для основного и вспомог. произ-в.
If flag_group = 1 Then
ds.Cells(i, 4).Value = rs.Fields("ak")
End If

If flag_group = 1 Then
ds.Cells(i, 5).Value = rs.Fields("np")
End If

If flag_group = 1 Then
ds.Cells(i, 7).Value = CDate(rs.Fields("dod"))
End If

If flag_group = 1 Then
ds.Cells(i, 6).Value = rs.Fields(6).Value
Else
'ds.Cells(i, 6).Value = rs.Fields("smr")
ds.Cells(i, 6).Value = rs.Fields(3).Value
End If

End If

Application.StatusBar = "Обрабатывается " & i & " строка dbf файла"
DoEvents
i = i + 1
rs.MoveNext
Wend

End If

' Закрываем набор
rs.Close
Set rs = Nothing

' Закрываем соединение
cnn.Close

End Sub

Scio me nihil scire

<<Jojo®>>
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Access denied после закрытия ADO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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