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

Вниз

ado и dll   Найти похожие ветки 

 
Новик   (2003-07-21 16:06) [0]

Ув. мастера. Объясните не сильно продвинутому в базах данных.
Есть программа, которая должна вызвать из ранее сотворенной
dll-ки форму с результатом какого нибудь запроса. Пишу форму, проверяю, перевожу в dll - все нормально. Как только использую
функцию из dll в основной программе выскакивает ошибка. Самое интересное, что ошибка выскакивает только тогда, когда на форме
есть какой нибудь ADO компонент, как только его убрать все начинает работать (правда без результата запроса). Отсюда вопрос: как правильно скомпилировать и открыть dll, использующую ADO компоненеты?


 
Silla   (2003-07-21 17:17) [1]

Я делал так:

{$R *.RES}
var
TablesList: TStringList;
Tab: TADOCommand;

procedure ExistsTblWarehouse(PathToBase, DataBaseName: String;
ADOConnection: TADOConnection); stdcall;
begin
TablesList := TStringList.Create;
try
ADOConnection.GetTableNames(TablesList);
if TablesList.IndexOf("Warehouse")<0 then
begin
Tab := TADOCommand.Create(nil);
Tab.CommandText := "Create table Warehouse ("+
"Id INTEGER not null primary key," +
"Name TEXT(12)," +
( 60) Я делал так:

{$R *.RES}
var
TablesList: TStringList;
Tab: TADOCommand;

procedure ExistsTblWarehouse(PathToBase, DataBaseName: String;
ADOConnection: TADOConnection); stdcall;
begin
TablesList := TStringList.Create;
try
ADOConnection.GetTableNames(TablesList);
if TablesList.IndexOf("Warehouse")<0 then
begin
Tab := TADOCommand.Create(nil);
Tab.CommandText := "Create table Warehouse ("+
"Id INTEGER not null primary key," +
"Name TEXT(12)," +
"NameFull TEXT(60)," +
"IdUser INTEGER," +
"UserDate DATE);";
Tab.Connection := ADOConnection;
Tab.Execute;
Tab.Free;
end;
finally
TablesList.Free;
end;
end;


 
Новик   (2003-07-22 15:38) [2]

Спасибо! Но интересно, нет ли какого способа делать это без динамики?


 
KSergey   (2003-07-22 16:16) [3]

Новик © (21.07.03 16:06)
функцию из dll в основной программе выскакивает ошибка. Самое интересное,

Какая именно ошибка - как всегда предлагается на самостоятельную проработку?

>Silla © (21.07.03 17:17)

А что такого в вашем коде особенного, что устраняет ошибку Новик? Если не трудно - поясните для меня, пожалуйста.


 
Новик   (2003-07-24 09:40) [4]

У меня было что то вроде "Интерфейс не зарегестрирован".
Впрочем, с этим я уже разобрался: достаточно вставить
в теле вызываемой dll функции соответственно в начале
CoInitialize и в конце CoUnInitialize, как все начинает
чудесным образом работать.



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

Форум: "Потрепаться";
Текущий архив: 2003.08.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.003 c
14-58399
den777
2003-08-04 10:24
2003.08.18
Как выгрузить ненужные пакеты


14-58492
Sharik_212
2003-08-04 15:49
2003.08.18
Как программно закрыть MessageBox?


14-58497
DimaB
2003-08-04 20:02
2003.08.18
Создание Shape


14-58478
II
2003-07-23 18:09
2003.08.18
Как в TDBGridEh запретить редактировать поределенную колонку


14-58428
IBSN
2003-08-01 16:01
2003.08.18
ctrl+alt+delete или OnExit





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