Automation Error при вызове TransferText из другого потока

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
dennis svezhentsev
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 05.08.2004 (Чт) 15:43

Automation Error при вызове TransferText из другого потока

Сообщение dennis svezhentsev » 10.08.2004 (Вт) 15:28

Вызов следующей функции

Public Sub ThreadProc()
Application.OpenCurrentDatabase MainForm.Text1.Text
DoCmd.TransferText acExportDelim, , "Points_253", CurDir + "orcl.csv"
Application.CloseCurrentDatabase
End Sub


В отдельном потоке:
Thread1 = CreateThread(ByVal 0&, 2000000, AddressOf ThreadProc, ByVal 0&, THREAD_PRIORITY_NORMAL, ThreadID)

Дает ошибку:

Automation Error: -2147221008

Кто-нибудь знает ка этого избежать?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 10.08.2004 (Вт) 15:56

надо открывать базу через отдельный workspace

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.08.2004 (Вт) 16:34

Сдаётся мне, параметров у ThreadProc маловато...
;-)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.08.2004 (Вт) 17:08

В общем-то да, один параметр должен быть :)
Хотя если его нет, то это тоже работает (и я, если честно, до сих пор не понимаю, почему :)).
Но дело, наверное, в том, что некий activex юзается в нарушение его threading model. Не нужно этим, наверное, заниматься :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

sslion
Постоялец
Постоялец
 
Сообщения: 334
Зарегистрирован: 12.04.2002 (Пт) 9:44
Откуда: Russia

Сообщение sslion » 10.08.2004 (Вт) 17:27

А что за Application в процедуре стоит?

Реальный заработок в Интернете: http://www.bxod.com/newuser.asp?frid=166509
Подробней о заработке в Интернете: http://sslion.narod.ru

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 10.08.2004 (Вт) 17:32

я уже писал, что нужно использовать отдельный workspace и юзать DAO, а не методы объекта Application в Access

sslion
Постоялец
Постоялец
 
Сообщения: 334
Зарегистрирован: 12.04.2002 (Пт) 9:44
Откуда: Russia

Сообщение sslion » 10.08.2004 (Вт) 17:46

Так Application - это Access????
Тогда ясна причина ошибки! В данном случае Access выступает в роли сервера объекта Application, который нельзя "запихнуть" в другой процесс от основной программы. Либо нежно инициализировать Application в том процессе из которого ты его вызываешь!

Действительно, пользуйся DAO! Так намного проще и "гибче"!


Реальный заработок в Интернете: http://www.bxod.com/newuser.asp?frid=166509
Подробней о заработке в Интернете: http://sslion.narod.ru


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList  
cron