Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.02.03;
Скачать: [xml.tar.bz2];

Вниз

ADOConnection.Open в сервисе   Найти похожие ветки 

 
gunner   (2003-01-16 11:33) [0]

При попытке установления соеденения с базой ADOConnection.Open
возникает exception "Необходимо вызвать CoInitialize"
Что это и как с этим бороться !??
Заранее спасибо !


 
sniknik   (2003-01-16 11:38) [1]

вызвать его!

CoInitialize(nil);
....
CoUnInitialize;



 
Anatoly Podgoretsky   (2003-01-16 11:49) [2]

Ну и что тебя сдерживает выполнить эту рекомендацию?


 
sniknik   (2003-01-16 12:21) [3]

толко что положил пример в кладовку, можеш посмотреть
http://delphi.mastak.ru/cgi-bin/download.pl?look=1&id=1042708779&n=1


 
gunner   (2003-01-16 12:26) [4]

Конечно же я Вызывал его.... эта мысль пришла мне на ум первой..но это не помогло..после этого он всёравно пишет что необходимо вызвать CoInitialize(nil);


 
Anatoly Podgoretsky   (2003-01-16 12:28) [5]

Значит не так или не там, но мы не телепаты, а хелп то ты посмотрел, так все прекрасно расписано, что это такое и для чего.


 
gunner   (2003-01-16 12:35) [6]

Честно говоря в хелпе я ничего не нашёл про это !
Нашёл на MSDN !
А Пример кода вот:

type
TTrfService = class(TService)
Connection: TADOConnection;
GetTargetIP: TADOQuery;
Timer: TTimer;
ResetBuffer: TADOCommand;
UpdateFilter: TTimer;
CheckSnmp: TTimer;
GetCntSnmp: TADOQuery;
ListNases: TADOQuery;
ResetCounters: TADOStoredProc;
procedure ServiceExecute(Sender: TService);
procedure TimerTimer(Sender: TObject);
procedure UpdateFilterTimer(Sender: TObject);
procedure CheckSnmpTimer(Sender: TObject);
private

procedure TTrfService.ServiceExecute(Sender: TService);
Begin
ADOCommand.Open;
.
.
.
.
.
.
end;


 
sniknik   (2003-01-16 12:36) [7]

а пример смотрел? работает? там тоже самое только + работа с базой через dll.


 
sniknik   (2003-01-16 12:39) [8]

внеси небольшие изменения
procedure TTrfService.ServiceExecute(Sender: TService);
Begin
CoInitialize(nil);
ADOCommand.Open;
.
.
.
.
.
.
CoUnInitialize;
end;


 
gunner   (2003-01-16 12:40) [9]

> sniknik ©
Я его не запускал.. но верю тебе наслово !
Вообще CoInitialize должно вызываться один раз ещё до вызова конструкторов ADO компонент... поэтому вызывать его перед Open помоему не в полне логично !


 
sniknik   (2003-01-16 12:46) [10]

очень логично, хелп ->
...call CoInitialize before they make any other COM library calls


 
sniknik   (2003-01-16 12:49) [11]

то есть до вызова,
вот в голову пришло может у тебя и в отладке коннект открыт? тогда первый вызов будет гораздо раньше.


 
gunner   (2003-01-16 12:51) [12]

Да нет... конект закрыт...
собственно с этого и начался весь этот бардак...
всё прекрастно работает если скомпилить сервис с уже открытым коннектом если же я его пытаюсь в ручную уже из прилады вызвать, то он не даётся !


 
Anatoly Podgoretsky   (2003-01-16 12:55) [13]

gunner (16.01.03 12:35)
Тема в хелпе так и называется, но MSDN конечно более полный

gunner (16.01.03 12:26)
Конечно же я Вызывал его....

Не видать, обманываешь или показывать нам не хочешь тот кусок

gunner (16.01.03 12:40)
Зря ты хелп не прочитал, так сказано, что можно несколько раз и как с этим бороться. Также сказано в каких случаях его вызывать нельзя.


 
sniknik   (2003-01-16 13:05) [14]

странно, у меня таких проблем не было.

но может тебе компоненты ADO-шные попробовать в рантайме создавать? во избежание внутренних действий что дельфи по умолчанию делает. так примерно
procedure TTrfService.ServiceExecute(Sender: TService);
Begin
CoInitialize(nil);
ADOConnection:= TADOConnection.Create(nil);
...
ADOCommand:= TADOCommand.Create(nil);
...
ADOCommand.Execute; // .Open; ??? странно
.
.
CoUnInitialize;
end;



 
asmith   (2003-01-16 14:20) [15]

И не забывать делать инициализацию среды СОМ для каждого созданного потока, использующего сервисы СОМ! Лучше в методе Execute. Можно в сервисе вызвать инициализацию ДО создания дополнительного потока и ADO не захочет работать.


 
Delirium   (2003-01-16 14:54) [16]

Рекомендую для прочтения:
http://nps.vnet.ee/ftp/Docs/Delphi/DX/COMmodel.html



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.02.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
4-5338
sel
2002-12-20 13:10
2003.02.03
Подключение к компу


3-4790
MsGuns
2003-01-16 19:01
2003.02.03
UPDATE INTO TABLE VALUES.. Добавить более одной строки


1-4971
Senator
2003-01-23 14:41
2003.02.03
Grid


4-5348
Rammst
2002-12-15 15:12
2003.02.03
Диалог даты и времени


3-4811
Whippi
2003-01-17 15:24
2003.02.03
ADOQuery и параметры?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский