Получение значения дополнительного поля из Lookup Dataset
Добрый день.
Подскажите пзл.
Есть справочник "Семейное положение", добавил в него поле NeedFamilyInfo (BOOL). В справочнике все работает - и в Террасофте, и в БД.
Необходимо при смене в Контактах поля Семейное Положение анализировать значение поля NeedFamilyInfo.
Делаю так в методе dlDataOnDatasetDataChange Контактов:
if (Name == "MaritalStatusID"){
if (Value != null)
{
debugger;
var DS = edtMaritalStatus.DataField.LookupDataset;
EnableDatasetFilters(DS, false);
ApplyDatasetIDFilter(DS, Value, true);
if (DS.State == dstInactive)
DS.Open();
else
RefreshDataset(DS);
dlData.Dataset.DataFields.ItemsByName("FamilyMemberCount").IsRequired = DS.ValAsBool("NeedFamilyInfo");
}}
но всегда DS.Values("NeedFamilyInfo") = null
Пробовал и с использованием функции GetFieldValueFromDisabledField - все равно null.
Подскажите плз, где может быть ошибка?
Нравится
Добавлю:
Смотрел профайлером - всегда из справочника идет запрос только двух полей - ID и Name. Как заставить оптимизатор выбрать допольнительно другие поля?
Еще добавлю вопрос:
Что означает свойство IsLookupDataset?
Здравствуйте!
1. В скрипте scr_Util. Вам необходимо использовать ф-цию GetFieldValueFromLookupDataset. Но в GetDatasetFieldValueFromDatasetByFilter необходимо сделать доработку:
... ApplyDatasetFilter(Dataset, FilterFieldName, FilterFieldValue, true); var DataField = Dataset.DataFields.ItemsByName(ResultFieldName); var Column = GetGeneralColumnByDataField(DataField); if ((Assigned(Column)) && (!Column.IsEnabled)) { Column.IsEnabled = true; } Dataset.Open(); ...
2. IsLookupDataset - см. http://terrasoft.com.ua/sdk/IDBDataset__IsLookupDataset@%5Bout,_retval%…