Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.10;
Скачать: CL | DM;

Вниз

Настройка строки подключения с помощью PromptDataSource (ADO)   Найти похожие ветки 

 
DmitryNekl ©   (2003-06-15 19:12) [0]

Мастера, подскажите, пожалуйста.

Проблема такая. Есть экселевский файл, из которого нужно получать данные. Я подключаюсь к нему через ADO. Для настройки строки подключения в рантайм в самом начале работы программы (метод Form.OnCreate) использую код (подсказали, спасибо!):
AdoConnection1.ConnectionString:=PromptDataSource(Form1.Handle, "");

Если программа запускается на моей машине (с установленной Delphi), все нормально отрабатывает.

Если же я запускаю ее на машине без Delphi, возникает ошибка, причем эта строчка не отрабатывает (окно Data Link Properties не показывается).

Сперва показывается стандартное окно ("Программа выполнила недопустимую операцию и будет закрыта..."), а затем показывается окно, в котором сообщается об "Exception EIntCastError in module ... at ... Interface not supported."

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

Заранее огромное спасибо!


 
elena_m ©   (2003-06-15 23:39) [1]

Первое, что приходит на ум, если без Дельфи не работает, - не все библиотеки подключены в инсталляции программы, в частности ADORTL70.bpl или VCLDB70.bpl.


 
DmitryNekl ©   (2003-06-16 00:27) [2]

У меня в Projects/Options/Package снята галочка Build with runtime packages - это ведь означает, что все необходимое зашивается в exe-ник автоматически?

В списке есть библиотеки:
VCL50;VCLX50;VCLSMP50;VCLDB50;VCLADO50;ibevnt50;VCLBDE50;VCLDBX50;QRPT50;TEEUI50;TEEDB50;TEE50;DSS50;TEEQR50;VCLIB50;VCLMID50;VCLIE50;INETDB50;INET50;NMFAST50;WEBMID50;dclocx50;dclaxserver50

Может, можно еще что-нибудь сюда добавить? :)

Или еще какие мысли?


 
DmitryNekl ©   (2003-06-16 12:40) [3]

Мастера, если кто-нибудь может помочь - помогите, пожалуйста! :)


 
sniknik ©   (2003-06-16 13:10) [4]

чегото у тебя в системе не установлено (от дельфей не зависит), конкретно нет интерфейсов (посмотри в реестре, не найдет?)
CLSID_DATALINKS: TGUID = "{2206CDB2-19C1-11D1-89E0-00C04FD7A829}"; {DataLinks}
IID_IDataInitialize: TGUID = "{2206CCB1-19C1-11D1-89E0-00C04FD7A829}";
IID_IDBPromptInitialize: TGUID = "{2206CCB0-19C1-11D1-89E0-00C04FD7A829}";
(если "Interface not supported" это к этому относится, если другие настраиваются (ODBC, MSSQL...) а Excel нет то тогда это внутренний интерфейс (скорее всего от jet))

нужно доустанавливать, а что нужно уточнять. можно все сразу DCOM95/98, MDAC 2.7, Jet.


 
DmitryNekl ©   (2003-06-16 14:15) [5]

>(если "Interface not supported" это к этому относится, если
>другие настраиваются (ODBC, MSSQL...) а Excel нет то тогда это
>внутренний интерфейс (скорее всего от jet))

у меня ни то чтобы что-то не настраивается, а окно, в котором нужно настраивать, не появляется (Data Link Properties) :(. Иными словами, я не дохожу до этапа выбора поставщика данных.
Мне кажется - действительно, не хватает каких-то библиотек, но вот каких? Впрочем, возможно, я ошибаюсь.

В любом случае спасибо! Но если будут еще какие мысли - буду очень благодарен! :)


 
sniknik ©   (2003-06-16 14:45) [6]

какие "еще мысли"? если нет доставь и все. если не появляется окно
в функции
function PromptDataSource(ParentHandle: THandle; InitialString: WideString): WideString;
var
DataInit: IDataInitialize;
DBPrompt: IDBPromptInitialize;
DataSource: IUnknown;
InitStr: PWideChar;
begin
Result := InitialString;
DataInit := CreateComObject(CLSID_DataLinks) as IDataInitialize;
if InitialString <> "" then
DataInit.GetDataSource(nil, CLSCTX_INPROC_SERVER,
PWideChar(InitialString), IUnknown, DataSource);
DBPrompt := CreateComObject(CLSID_DataLinks) as IDBPromptInitialize;
if Succeeded(DBPrompt.PromptDataSource{ а появляется оно сдесь, на этом вызове }(nil, ParentHandle,
DBPROMPTOPTIONS_PROPERTYSHEET, 0, nil, nil, IUnknown, DataSource)) then
begin
InitStr := nil;
DataInit.GetInitializationString(DataSource, True, InitStr);
Result := InitStr;
end;
end;


то значит нет интерфейсов к соответствующим COM обьектам (рушится предыдущее инициализация/вызов). проверь в реестре (поиск по цыфирькам) если нету, значит ставь. Конкретно эти по моему MDAC-ом ставятся.



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

Текущий архив: 2003.07.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
14-31397
RIMMER
2003-06-23 00:58
2003.07.10
Куда уходят ветки?


3-31144
Yus
2003-06-09 19:32
2003.07.10
Вопрс по языковому драйверу


1-31349
Oxy
2003-06-27 13:38
2003.07.10
Почему контрол не отрисовывается?


1-31241
Всеволод Соловьёв
2003-06-28 23:11
2003.07.10
Как у TRichEdit убрать выделение?


3-31140
Silver_
2003-06-18 14:29
2003.07.10
ADODataSetDETAIL.Filter не катит. Приходится делать так ...