Страница 1 из 4

Incompatible types: 'IMDTDatabase' and 'TMDTDatabase'

СообщениеДобавлено: 18 янв 2011, 16:41
sancho19
Хотел подключить MDT к TpFIBDatabase в RunTime

procedure TdmMdt.DataModuleCreate(Sender: TObject);
begin
moDMGlobal.moDataModuleGlobal.pFIBDBMiniOffice.MDTDatabase := mdtdtbs1;
end;

выдает ошибку.

[Error] moMDT.pas(34): Incompatible types: 'IMDTDatabase' and 'TMDTDatabase'

Как это сделать? Я с интерфейсами никода не работал.

Re: Incompatible types: 'IMDTDatabase' and 'TMDTDatabase'

СообщениеДобавлено: 18 янв 2011, 16:47
Мишенков Александр
sancho19 писал(а):Хотел подключить MDT к TpFIBDatabase в RunTime

procedure TdmMdt.DataModuleCreate(Sender: TObject);
begin
moDMGlobal.moDataModuleGlobal.pFIBDBMiniOffice.MDTDatabase := mdtdtbs1;
end;

выдает ошибку.

[Error] moMDT.pas(34): Incompatible types: 'IMDTDatabase' and 'TMDTDatabase'

Как это сделать? Я с интерфейсами никода не работал.


function TdmMdt.GetIMDTDatabase(AMDTDatabase:TMDTDatabase):IMDTDatabase;
begin
if not AMDTDatabase.GetInterface(iid_MDTDatabase,Result)
then raise Exception.Create('iid_MDTDatabase not found');
end;

....
moDMGlobal.moDataModuleGlobal.pFIBDBMiniOffice.MDTDatabase := GetIMDTDatabase(mdtdtbs1);
....

Re: Incompatible types: 'IMDTDatabase' and 'TMDTDatabase'

СообщениеДобавлено: 18 янв 2011, 17:41
sancho19
[Error] moMDT.pas(15): Undeclared identifier: 'IMDTDatabase'
[Error] moMDT.pas(35): Undeclared identifier: 'iid_MDTDatabase'

Re: Incompatible types: 'IMDTDatabase' and 'TMDTDatabase'

СообщениеДобавлено: 18 янв 2011, 18:28
Мишенков Александр
sancho19 писал(а):[Error] moMDT.pas(15): Undeclared identifier: 'IMDTDatabase'
[Error] moMDT.pas(35): Undeclared identifier: 'iid_MDTDatabase'

Добавь FIBMDTInterface в uses

Re: Incompatible types: 'IMDTDatabase' and 'TMDTDatabase'

СообщениеДобавлено: 18 янв 2011, 18:43
sancho19
Установил в дизайне. При окрытии базы выдает
MDT. Soket of database "d:\IB_Data\mdt_ziz.fdb"
Коннект к базе вообще не происходит. Чо делать.
Сам сервер я настроил и запустил.
Есть ли дока по начальной настройке компонент и их свойствам.
На http://mirrordatabase.com/stepbystep.html настройка через подмену dll

Re: Incompatible types: 'IMDTDatabase' and 'TMDTDatabase'

СообщениеДобавлено: 18 янв 2011, 19:30
kve
sancho19 писал(а):Есть ли дока по начальной настройке компонент и их свойствам.
На http://mirrordatabase.com/stepbystep.html настройка через подмену dll


На сайте нет. Завтра поищем у себя. Была.

sancho19 писал(а):Установил в дизайне. При окрытии базы выдает
MDT. Soket of database "d:\IB_Data\mdt_ziz.fdb"
Коннект к базе вообще не происходит. Чо делать.
Сам сервер я настроил и запустил.


Надо прописать свойства у компоненты MDTDatabase. Основные (для начала):
SteadyStoragePath - папка где хранить файлы с кэшированными данными таблиц.
TempStoragePath - папка для всяких временных файлов

Дальше надо добавить элемент к коллекцию RealDBSockets MDTDatabase-а и у него прописать:
IBRealDBCanal.IBRealDatabase.FileName - имя файла БД
IBRealDBCanal.Alias - псевдоним базы на mdt-сервере (так как ты ее назвал в MDTAdministrator)
IBRealDBCanal.IBDatabaseConnectParams.UserName - имя пользователя Firebird
IBRealDBCanal.IBDatabaseConnectParams.Password - пароль
IBRealDBCanal.IBDatabaseConnectParams.RoleName - имя роли

То есть сделано так, что если есть MDTDatabase, то информация о сервере и базе прописывается в ней, а аналогичные настройки в FIBDatabase игнорируются.

Re: Incompatible types: 'IMDTDatabase' and 'TMDTDatabase'

СообщениеДобавлено: 18 янв 2011, 20:49
sancho19
Надо прописать свойства у компоненты MDTDatabase. Основные (для начала):


Установил свойства.
Теперь выдает ошибку
EFIBInterbaseError Can't format message 13:96 - message file
C:\Program File\Borland\interbase/interbase.msg not found Unvaliable database
И далее
Db not open

Re: Incompatible types: 'IMDTDatabase' and 'TMDTDatabase'

СообщениеДобавлено: 19 янв 2011, 16:15
kve
sancho19 писал(а):Установил свойства.
Теперь выдает ошибку
EFIBInterbaseError Can't format message 13:96 - message file
C:\Program File\Borland\interbase/interbase.msg not found Unvaliable database
И далее
Db not open


Хмм...
Firebird (он кстати у тебя как-то недоустановлен, судя по Can't format message) такое обычно говорит если имя файла базы неправильное.
Там у MDTDatabase в свойстве IBRealDBCanal.IBRealDatabase.FileName точно все правильно?
И еще. Если в DesignTime у компоненты MDTDatabase (не у FIBDatabase!) свойство Connected в true поставить, тоже ругается или дает установить?

Re: Incompatible types: 'IMDTDatabase' and 'TMDTDatabase'

СообщениеДобавлено: 19 янв 2011, 18:17
sancho19
Если в DesignTime у компоненты MDTDatabase (не у FIBDatabase!) свойство Connected в true поставить


Тоже сообщение об ошибке Can't format message)

В Админитстраторе МДТ было видно поключение, но само приложение не соединяется с БД.

Попутно вопросы по Админитстратору

У Админитстратора Тайм -аут пришлось увеличить до 50с. Иначе файрвол не давал соединятся
При соеденениии периодически и во время выполнения задачи соединение разрывает vpn для internet. файрвол отключал - то же самое.

Re: Incompatible types: 'IMDTDatabase' and 'TMDTDatabase'

СообщениеДобавлено: 20 янв 2011, 08:44
Мишенков Александр
Саша, я вчера был в командировке, поэтому не отвечал. Сегодня ответы будут оперативны.

Мне кажется не совсем удачным, тот путь, который ты выбрал для тестирования MDT.
Ты пытаешься работать сразу в MDT и причем в реальных условиях, когда база находится на отдельном сервере, да еще Firewall между вами.
Плюс есть подозрение на некорректно поставленный Firtebird. Все это вызывает ненужную мешанину проблем и вопросов.

Дело - конечно твое, но я бы советовал делать так.

1.Развернуть у себя локально Firebird.
2.Создать тестовую базу
3.Написать тестовое приложений для клиентской части с использованием голого FIB+. Одна две формы с запросами и гридами будет вполне достаточно.
4.Проинсталировать серверную часть MDT на этой тестовой базе
5.Модифицировать тестовое приложение, включив в него MDTDatabase и соединить его с FIBDatabase. Проверить его работоспособность в локальных условиях.
6.Перенести тестовую базу на удаленный сервер и попробовать работу тестового приложения в условиях реальной среды.
7.Подключить MDT к реальному проекту и проверить его работоспособность в условиях локального соединения (нет удаленных серверов, нет Firewall )
8. Запуск реального проекта с MDT в реальных условиях.

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

Разумеется, каждый последующийй шаг не делается без успеха на предыдущем!