Какими методами получить атрибуты relating_organization и related_organization у объекта organization_relationship?
:o Объектры загружаются ф-ей LoadOrgStruct() :roll: атрибуты других объектов достаются без проблем. :ugeek:
c++ api
Re: c++ api
После вызова LoadOrgStruct все атрибуты organization_relationship будут в кэше.
Чтение этих атрибутов ничем не отличается от других. Для уменьшения числа потенциальных ошибок можно попробовать прочитать по имени атрибута (GetAttrBN).
Возможно, Вы читаете из объекта, в котором эти атрибуты не заданы.
Чтобы посмотреть реальное содержимое базы можно взять aplDBE.bin и переименовать его в aplDBE.exe. Затем запустить, установить соединение с БД и .... (думаю будет понятно). ОСТОРОЖНО !!! Этой программой, если менять данные, можно убить БД (поэтому и лежит не как exe).
Чтение этих атрибутов ничем не отличается от других. Для уменьшения числа потенциальных ошибок можно попробовать прочитать по имени атрибута (GetAttrBN).
Возможно, Вы читаете из объекта, в котором эти атрибуты не заданы.
Чтобы посмотреть реальное содержимое базы можно взять aplDBE.bin и переименовать его в aplDBE.exe. Затем запустить, установить соединение с БД и .... (думаю будет понятно). ОСТОРОЖНО !!! Этой программой, если менять данные, можно убить БД (поэтому и лежит не как exe).
-
- Сообщения: 5
- Зарегистрирован: 21 авг 2008, 12:14
Re: c++ api
Код: Выделить всё
...
aplExtent ext;
CString oname;
m_apl->m_appr_mgr.LoadOrgStruct(&ext);
for(int i=0;i<ext.GetSize();i++)
{
/* как пример, для организации считывает нормально*/
if(ext[i]->GetType()->name=="organization")
{
m_apl->m_data.GetAttrBN(ext[i], "name", oname);
printf(oname);
}
/*а тут нет*/
if(ext[i]->GetType()->name=="organization_relationship")
{
//ссылки на объекты INT ?!
int intVal;
m_apl->m_data.GetAttrBN(ext[i], "relating_organization", intVal);
printf(intVal);
//тут уже вариации :)
long longVal;
m_apl->m_data.GetAttrBN(ext[i], "relating_organization", longVal);
printf(longVal);
CaplValue val;
CString str;
m_apl->m_data.GetAttrBN(ext[i], "relating_organization", val);
val.Print(str);
printf(str);
m_apl->m_data.GetAttrBN(ext[i], "relating_organization", str;);
printf(str);
//везде 0 или пустые строки :(
}
}
...
Re: c++ api
1. Атрибут "relating_organization" – это ссылка на другой объект. Читать надо так:
2. Проверять тип по имени не совсем корректно (не будут обрабатываться потомки). Правильнее:
3. LoadOrgstruct возвращает все что относится к оргструктуре, включая роли и статусы. Чтобы не перебирать лишнего, можно сделать так:
Код: Выделить всё
CaplInstance *inst_org;
m_apl->m_data.GetAttrBN(ext[i], "relating_organization", inst_org);
if(0== inst_org) printf(“Пустой атрибут”);
else
{
m_apl->m_data.GetAttrBN(inst_org, "name", oname);
printf(oname);
}
Код: Выделить всё
if( m_apl->m_data.IsKindOfBN(ext[i], "relating_organization"))
Код: Выделить всё
CaplAPI *m_apl=new CaplAPI;
m_apl->Connect("","","");
int i,j;
aplExtent ext_org,ext_rel;
CString oname;
m_apl->m_appr_mgr.LoadOrgStruct();
m_apl->m_data.GetEntityExtentBN("organization", ext_org);
m_apl->m_data.GetEntityExtentBN("organization_relationship", ext_rel);
for(i=0;i<ext_org.GetSize();i++)
{
/* читаем имя организации */
m_apl->m_data.GetAttrBN(ext_org[i], "name", oname);
printf("\n");
oname.AnsiToOem(); // Для отобр. русских букв в консоли
printf(oname);
printf("\n");
for(j=0;j<ext_rel.GetSize();j++)
{
CaplInstance *inst_org;
m_apl->m_data.GetAttrBN(ext_rel[j], "relating_organization", inst_org);
if(ext_org[i]!= inst_org) continue;
m_apl->m_data.GetAttrBN(ext_rel[j], "related_organization",inst_org);
if(inst_org) m_apl->m_data.GetAttrBN(inst_org, "name", oname);
printf("\n *** ");
oname.AnsiToOem(); // Для отобр. русских букв в консоли
printf(oname);
}
}
Re: c++ api
Здравствуйте уважаемые разработчики! Пишет Вам группа студентов из МГТУ им. Баумана. В данный момент мы выполняем проект в среде PDM Step Suite и унас возникли сложности с поиском примеров и информации по API. Огромная просьба выслать на blindblazer@mail.ru SDK с документацией и примеры (модули, написанные с помощью API на С++).
Заранее благодарим!!!
Заранее благодарим!!!
Re: c++ api
Примеры по API http://pss.cals.ru/DOC/API/