Incompatible types: 'IMDTDatabase' and 'TMDTDatabase'

Средство повышения производительности информационных систем

Incompatible types: 'IMDTDatabase' and 'TMDTDatabase'

Сообщение sancho19 18 янв 2011, 16:41

Хотел подключить MDT к TpFIBDatabase в RunTime

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

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

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

Как это сделать? Я с интерфейсами никода не работал.
sancho19
 
Сообщения: 25
Зарегистрирован: 18 янв 2011, 16:04

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);
....
Мишенков Александр
 
Сообщения: 25
Зарегистрирован: 05 фев 2010, 17:31

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

Сообщение sancho19 18 янв 2011, 17:41

[Error] moMDT.pas(15): Undeclared identifier: 'IMDTDatabase'
[Error] moMDT.pas(35): Undeclared identifier: 'iid_MDTDatabase'
sancho19
 
Сообщения: 25
Зарегистрирован: 18 янв 2011, 16:04

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
Мишенков Александр
 
Сообщения: 25
Зарегистрирован: 05 фев 2010, 17:31

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

Сообщение sancho19 18 янв 2011, 18:43

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

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

Сообщение kve 18 янв 2011, 19:30

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 игнорируются.
kve
 
Сообщения: 2
Зарегистрирован: 18 янв 2011, 19:15

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

Сообщение sancho19 18 янв 2011, 20:49

Надо прописать свойства у компоненты MDTDatabase. Основные (для начала):


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

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

Сообщение kve 19 янв 2011, 16:15

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 поставить, тоже ругается или дает установить?
kve
 
Сообщения: 2
Зарегистрирован: 18 янв 2011, 19:15

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

Сообщение sancho19 19 янв 2011, 18:17

Если в DesignTime у компоненты MDTDatabase (не у FIBDatabase!) свойство Connected в true поставить


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

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

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

У Админитстратора Тайм -аут пришлось увеличить до 50с. Иначе файрвол не давал соединятся
При соеденениии периодически и во время выполнения задачи соединение разрывает vpn для internet. файрвол отключал - то же самое.
sancho19
 
Сообщения: 25
Зарегистрирован: 18 янв 2011, 16:04

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 в реальных условиях.

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

Разумеется, каждый последующийй шаг не делается без успеха на предыдущем!
Мишенков Александр
 
Сообщения: 25
Зарегистрирован: 05 фев 2010, 17:31

След.

Вернуться в MDT

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron