• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

FindObjects ?

Автор bvr, 15.02.11, 11:30:43

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

bvr

Такой код

CComSafeArray<VARIANT> methodParams2(9);
methodParams2[0] = L"Сборочная единица";
methodParams2[1] = L"123";
methodParams2[2] = L"";
methodParams2[3] = L"";
methodParams2[4] = L"";
methodParams2[5] = L"";
methodParams2[6] = L"";
methodParams2[7] = &inRetCode;
methodParams2[8] = &strErr;
IPC->RunMethod(CComBSTR(L"FindObjects"), CComVariant(methodParams2), &vaResult);

Как посмотреть, что нашел лоцман?
Спасибо

Chaa

Установить формат возврата данных в XML.
CComSafeArray<VARIANT> methodParams(3);
methodParams2[0] = L"xml";
methodParams2[1] = &inRetCode;
methodParams2[2] = &strErr;
IPC->RunMethod(CComBSTR(L"SetFormat"), CComVariant(methodParams), &vaResult);

После чего в vaResult будет строка - XML с набором данных.

bvr

Где почитать про обработку XML строк?

Chaa

В интернете, почитайте про MS XML (Microsoft XML Core Services).
http://msdn.microsoft.com/en-us/library/ms760399.aspx

А писать на Delphi нет возможности? Было бы проще.

bvr

Delphi как их (xml) обрабатывает?

Chaa

Про XML это я зря написал. Заработался. Это все не надо. Вам нужно использовать GetDataSet.
CComSafeArray<VARIANT> methodParams(9);
methodParams2[0] = L"Сборочная единица";
methodParams2[1] = L"123";
methodParams2[2] = L"";
methodParams2[3] = L"";
methodParams2[4] = L"";
methodParams2[5] = L"";
methodParams2[6] = L"";
methodParams2[7] = &inRetCode;
methodParams2[8] = &strErr;
CComPtr<IDataSet> dataSet;
IPC->GetDataSet(CComBSTR(L"FindObjects"), CComVariant(methodParams), &dataSet);
for(VARIANT_BOOL eof = TRUE; dataSet->get_Eof(&eof), !eof; dataSet->Next())
{
CComVariant fieldValue;
dataSet->get_FieldValue(CComBSTR(L"_PRODUCT"), &fieldValue);
...
}

В Delphi можно было бы использовать родной TClientDataSet и контролы, которые с ним работают.

bvr

Еще вопрос - в параметр записываю
methodParams2[1] = L"%123%";
поиск....
for(VARIANT_BOOL eof = TRUE; dataSet->get_Eof(&eof), !eof; dataSet->Next())
{
   CComVariant fieldValue;
   dataSet->get_FieldValue(CComBSTR(L"_PRODUCT"), &fieldValue);
   ...
}
Когда в цикле просматриваю fieldValue, полученное по коду "_PRODUCT" вижу только 123, но есть объекты и "123 СБ", "123 ВП", "123 ВМ", полного названия я не вижу, почему? В цикле делается несколько проходов, т.е. лоцман находит несколько записей, но выдает только "123"

Спасибо

bvr

Вопрос снят, разобрался