Форум: "Базы";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];
ВнизНастройка строки подключения с помощью 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c