Имя: Пароль:
1C
1C 7.7
v7: Как отконектится от ADODB ?
,
0 DES
 
09.05.13
17:25
Connection = CreateObject("ADODB.Connection");

подключаюсь к базе1
Все нормально.
отконекчивась.

Connection.Close();
Connection = 0;
Connection = CreateObject("ADODB.Connection");

Если хочу отключиться и подключиться к такой же, но другой.
Ругается что база занята.

Мне в цикле нужно перебрать десяток баз.
Как реализовать ?
1 Ковычки
 
09.05.13
17:27
не убивать объект ?
2 DES
 
09.05.13
17:35
Всмысле ?
//Connection = 0;
так - тоже самое.
3 DES
 
09.05.13
17:42
Microsoft OLE DB Provider for ODBC Drivers: [ODBC Firebird Driver]operating system directive CreateFile failed
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
4 Jaap Vduul
 
09.05.13
19:59
(3)
Так может и в самом деле файл занят другим процессом?
Или вот, например, так бывает:
http://tracker.firebirdsql.org/browse/CORE-3558
5 Svetka
 
09.05.13
20:37
6 DES
 
09.05.13
22:47
СПС. Это все скурено уже.
Похоже на то что  драйвер ADODB одноразовый.
Даже если вызвать обработку 2-й раз но с другой строкой подключения, то вылетает по ошибке.
7 DES
 
09.05.13
22:49
(4) нет, не занят
8 Torquader
 
09.05.13
23:37
Попробуй через "вставку" на VbScript - с ним ADODB работает достаточно стабильно, и в VbScript есть команда Erase для превращения объекта в неизвестно что.
9 DES
 
10.05.13
11:21
(8) подскажи рыбу
10 DES
 
10.05.13
12:03
(8) Да. Спасибо.
VBS - отработало как нужно.
11 DES
 
10.05.13
12:06
Dim Connection
Dim sql_query
Dim objFSO, objOutFile
Dim intCount, i
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOutFile = objFSO.OpenTextFile("T:\label.txt", 8, True)

sql_query = "Select id,n,cp from label where year=2013"
set Connection = CreateObject("ADODB.Connection")

Connection.ConnectionString = "Driver=Firebird/InterBase(r) driver;Dbname=T:\BD1.GDB;CHARSET=NONE;PWD=masterkey;UID=SYSDBA;Client=T:\gds32.dll"
Connection.Open
objOutFile.Write Connection.Properties.Item(0).Name & " = " & Connection.Properties.Item(0).Value & vbCrLf
Set RecordSet = Connection.execute(sql_query)
intCount = RecordSet.Fields.Count
do while not RecordSet.eof
   objOutFile.Write RecordSet.Fields(0).Value & " " & RecordSet.Fields(1).Value & " " & RecordSet.Fields(2).Value & vbCrLf
   RecordSet.MoveNext
loop
Connection.close

Connection.ConnectionString = "Driver=Firebird/InterBase(r) driver;Dbname=T:\BD2.GDB;CHARSET=NONE;PWD=masterkey;UID=SYSDBA;Client=T:\gds32.dll"
Connection.Open
objOutFile.Write Connection.Properties.Item(0).Name & " = " & Connection.Properties.Item(0).Value & vbCrLf
Set RecordSet = Connection.execute(sql_query)
intCount = RecordSet.Fields.Count        
do while not RecordSet.eof
   objOutFile.Write RecordSet.Fields(0).Value & " " & RecordSet.Fields(1).Value & " " & RecordSet.Fields(2).Value & vbCrLf
   RecordSet.MoveNext
loop
Connection.close
12 Ковычки
 
10.05.13
12:07
странно
13 DES
 
10.05.13
12:40
Все понятно, не в этом дело , а в том что я вызываю библиотеку драйвера из того же каталога что и база.
Этот файл как раз и занят.
Если его вызывать из одного любого каталога то все работает штатно.
Connection.ConnectionString = "Driver=Firebird/InterBase(r) driver;Dbname=Т:\ + СокрЛП(Кат_GDB) + "\BD.GDB"  + ";CHARSET=NONE;PWD=masterkey;UID=SYSDBA;Client=T:\gds32.dll";

а так не хочет:

Connection.ConnectionString = "Driver=Firebird/InterBase(r) driver;Dbname=Т:\ + СокрЛП(Кат_GDB) + "\BD.GDB"  + ";CHARSET=NONE;PWD=masterkey;UID=SYSDBA;Client=Т:\ + СокрЛП(Кат_GDB) + "\gds32.dll";
14 DES
 
10.05.13
13:12
нужно выгружать DLL
Делаю >tasklist /M gds32.dll
Вызывается окно завершения 1С.
15 Ковычки
 
10.05.13
13:14
самомо собой, причину
16 DES
 
10.05.13
13:18
причина taskkill /FI "MODULES eq gds32.dll"
17 Ковычки
 
10.05.13
13:25
(16) надо найти в чем разница
18 Ковычки
 
10.05.13
13:28