Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.011 c
14-31447
anbezr
2003-06-23 18:43
2003.07.10
Определить, уничтожен ли объект


1-31293
_mandrake_
2003-06-25 15:05
2003.07.10
Image.Picture. SaveToFile()


1-31226
Дучф
2003-06-29 08:57
2003.07.10
Проблема c Excel


1-31300
kostas
2003-06-26 15:34
2003.07.10
Как реализован интерфейс Object Inpector-а и Editor-а из Delphi


8-31367
lexa
2003-03-23 22:30
2003.07.10
Как заставить TMediaPlayer выводить звук через системный динамик?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский