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

Есть 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
10.06.2004, 16:45
    #32556649
raur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка 3709
to paparome
млин...
а нельзя ли объяснить по подробнее плиз (можно на примерах)
в двух твоих процах я не нашел разницы... а коннекшены я вообше не закрываю...
...
Рейтинг: 0 / 0
10.06.2004, 16:49
    #32556658
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка 3709
raurto paparome
млин...
а нельзя ли объяснить по подробнее плиз (можно на примерах)
в двух твоих процах я не нашел разницы... а коннекшены я вообше не закрываю...

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

Может код dll покажешь (можно ту часть, где этот коннект открывается)
...
Рейтинг: 0 / 0
10.06.2004, 16:52
    #32556665
raur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка 3709
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
10.06.2004, 16:57
    #32556677
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ошибка 3709
И в какой момент коннект открывается?

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

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

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

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

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


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