Есть наследник ODBCRecordset. Есть желание научить его работать с присоединёнными базами. Для этого нужен доступ к их метаданным.
дб = СоздатьОбъект("ODBCDataBase");
дб.ПрисоединитьИБ(...);
рс = СоздатьОбъект("AccountsRecordset");
рс.УстБД(дб);
Свойство рс.мд в этом месте указывает на метаданные текущей базы. И это соответствует документации:
Цитата:свойство содержит статический объект типа MetaDataWork.
Такой дизайн имел смысл, пока не было методов ПрисоединитьИБ/ПрисоединитьМД.
Можно было бы переопределить метод УстБД и написать в нём
мд = СоздатьОбъект("MetaDataWork");
мд.ПрисоединитьМД(что здесь?);
но как узнать в этой точке путь к .md? Получается, что я должен отдельно реализовать метод
ПрисоединитьМД() у наследника ODBCRecordset.
Предложения (нужное подчеркнуть):
1. сделать свойство мд нестатическим и подключать его к метаданным присоединённой ИБ;
- обратная совместимость
+ не нужно вставать два раза
2. научить ODBCDataBase возвращать метаданные присоединённой ИБ (или, хотя бы, путь к ней).
+ и - понятны