powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ошибка 3709
16 сообщений из 16, страница 1 из 1
ошибка 3709
    #32556539
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем
есть exe-шник и dll-ка
dll-ка выполняет подключение к базе данных, а с ехе-шника я его вызываю. Так он мне выдает ошибку 3709 "Не допускается операции над объектом, ссылающимся на закрытое или недопустимое подъключение"
может кто сталкивался?
HELP
...
Рейтинг: 0 / 0
ошибка 3709
    #32556580
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объект закрыт.

Есть 2 варианта:
- ты его не открыл
- где-то закрыл

Пример второго варианта:
проц1:
Dim cnn as Connection
Dim rs as New RecordSet
Set cnn = MyClass.GetCnn()
rs.Open strSQL, cnn
...
cnn.Close
end проц1:

проц2:
Dim cnn as Connection
Dim rs as New RecordSet
Set cnn = MyClass.GetCnn()
rs.Open strSQL, cnn
...
end проц2:

Коннекшен был закрыт в процедуре №1, т.к. вы получаете ссылку на объект, а не его копию
Следовательно в процедуре №2 вы получите ошибку
...
Рейтинг: 0 / 0
ошибка 3709
    #32556649
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to paparome
млин...
а нельзя ли объяснить по подробнее плиз (можно на примерах)
в двух твоих процах я не нашел разницы... а коннекшены я вообше не закрываю...
...
Рейтинг: 0 / 0
ошибка 3709
    #32556658
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
raurto paparome
млин...
а нельзя ли объяснить по подробнее плиз (можно на примерах)
в двух твоих процах я не нашел разницы... а коннекшены я вообше не закрываю...

В них нет разницы
Этим примером, я хотел показать, что при закрытии коннекта в первом процессе, он во врором УЖЕ будет закрыт
Если не закрываешь, значит это не твой вариант
Тогда проверяй - а открываешь ли ты его?

Может код dll покажешь (можно ту часть, где этот коннект открывается)
...
Рейтинг: 0 / 0
ошибка 3709
    #32556665
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Option Explicit
Public rec As ADODB.Recordset
Public con As ADODB.Connection
Public fn As String

Public Function Connect() As ADODB.Connection
Dim tmplng As Long
On Error GoTo mis
Set con = New ADODB.Connection
With con
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Mode = adModeReadWrite
End With
con.Open "Data Source=" & fn

If Err.Number > 0 Then
Open "C:\Test\ActX1.log" For Append As #1
Write #1, "Can not find Test_base.mdb: " & Err.Number & " " & Err.Description
Close #1
Exit Function
End If

Exit Function

mis:
Select Case Err.Number
Case -2147217843
tmplng = tmplng + 1
If tmplng < 10 Then
Resume
Else
Resume Next
End If
Case Else
MsgBox Err.Description, vbCritical, Err.Number
End Select

End Function

Public Function Recorder() As ADODB.Recordset
Dim tmplng As Long
On Error GoTo mis
Set rec = New ADODB.Recordset
With rec
.CursorLocation = adUseServer
.Source = "select * from [table]"
.CursorType = adOpenDynamic
End With

If Err.Number > 0 Then
Open "C:\Test\ActX1.log" For Append As #1
Write #1, "Can not find table in Test_base.mdb: " & Err.Number & _
" " & Err.Description
Close #1
Exit Function
End If

rec.Open , con, , adLockBatchOptimistic

Exit Function

mis:
Select Case Err.Number
Case -2147217843
tmplng = tmplng + 1
If tmplng < 10 Then
Resume
Else
Resume Next
End If
Case Else
MsgBox Err.Description, vbCritical, Err.Number
End Select

End Function
...
Рейтинг: 0 / 0
ошибка 3709
    #32556677
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в какой момент коннект открывается?

т.е. где строка типа
Set con = Connect()
?

ЗЫ: Я бы ее запихал в событие коласса Class_Initialize
...
Рейтинг: 0 / 0
ошибка 3709
    #32556686
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я открываю ее в ехе-шнике:
dim ss as class1
set ss = new class1
ss.connect
ss.recorder
...
Рейтинг: 0 / 0
ошибка 3709
    #32556697
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
raurя открываю ее в ехе-шнике:
dim ss as class1
set ss = new class1
ss.connect
ss.recorder

Все равно не понял :(
зачем использовать функции, если ты их используешь как процедуры :(

И где у тебя fn присваивается?
авторcon.Open "Data Source=" & fn
...
Рейтинг: 0 / 0
ошибка 3709
    #32556707
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dim ss as class1
set ss = new class1
ss.fn=cstr(...)
ss.connect
ss.recorder
...
Рейтинг: 0 / 0
ошибка 3709
    #32556772
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И на какой строке ругается?
...
Рейтинг: 0 / 0
ошибка 3709
    #32556798
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dim ss as class1
set ss = new class1
ss.fn=cstr(...)
ss.connect
ss.recorder - здесь
...
Рейтинг: 0 / 0
ошибка 3709
    #32556815
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
была одна функция, но я разбил на ее на 2:
connect и recorder, чтобы было видно, где ошибка...
а что на счет 1 варианта (когда я его не открыл)?
...
Рейтинг: 0 / 0
ошибка 3709
    #32556890
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин - я совсем запутался :(
Ждем еще кго-нить, поумнее меня
...
Рейтинг: 0 / 0
ошибка 3709
    #32556902
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эту ошибку обошел... уфффф
вышла новая:
Public fi As Class1
Set fi = New Class1
Set DataGrid1.DataSource = fi.rec - "7004-the rowset is not bookmarkable"
...
Рейтинг: 0 / 0
ошибка 3709
    #32556907
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to paparome
спасибо за помощь
...
Рейтинг: 0 / 0
ошибка 3709
    #32556920
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
raurto paparome
спасибо за помощь

было бы за что :(
ты ж сам ошибку нашел :)
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ошибка 3709
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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