Подскажите, как в Террасофт работать с полем перечисления.
Например, я хочу проверить какое значение выбрано в поле перечисления. Мне для этого нужно сравнивать ID, Code или Caption?
Или как мне присвоить определенное значение этому полю: с помощью ID, Code или Caption?
Как будет удобнее всего и универсальнее?
Нравится
"Кошкаров Андрей" написал:Или как мне присвоить определенное значение этому полю: с помощью ID, Code или Caption?
По ID
"Кошкаров Андрей" написал:Например, я хочу проверить какое значение выбрано в поле перечисления. Мне для этого нужно сравнивать ID, Code или Caption?
Так же ID
"Раловец Ольга" написал:Вы используете EnumControl или EnumDataControl?
EnumDataControl
Так обращайтесь не к элементу управления, а к соответствующему полю датасета по имени поля (полю указнному в DataFieldName EnumDataControl-a). В этом поле хранится ID записи.
"Раловец Ольга" написал:Так обращайтесь не к элементу управления, а к соответствующему полю датасета по имени поля (полю указнному в DataFieldName EnumDataControl-a). В этом поле хранится ID записи.
Я так и делаю. Вопрос был в другом. Как мне проверять значение этого поля и присваивать ему какое-то другое значение.
"Кулак Олег" написал:По ID
Хорошо, так и сделаю. Просто я думал, что возможно есть такая возможность по значению Code делать сравнение и присвоение.
Что-то типа:
if (EnumItem.Code == co_FIFO)
или
EnumItem.Code = co_Expensive
По ID не видно, какое значение используется, а по Caption - есть вероятность изменения этого значения. По Code было бы самым оптимальным:
- значение не меняется
- понятно о каком значении идет речь
А для этого, Вам нужно будет подключить перечисление к скрипту!
"Виталий Ковалишин aka samael" написал:А для этого, Вам нужно будет подключить перечисление к скрипту!
А как это делается?
"Кошкаров Андрей" написал:Я так и делаю. Вопрос был в другом.
Включаете перечисление в скрипт и пишите
if (dlData.Dataset.Values('FieldName') == co_FIFO){ //Do somthing }
Ольга правильно ответила, Вы просто не поняли.
Upd: Хотя на самом деле почти правильно :)
я еще вот такую возможность нашел:
if (DataField.ValAsEnumItem.Code == 'co_FIFO') { // some code }
Спасибо всем за помощь, теперь у меня ясность по этому вопросу.
"Underscore a.k.a. _" написал:Upd: Хотя на самом деле почти правильно :)
Поправьте меня, пожалуйста, что именно не правильно.
Вы не сказали, что нужно включить перечисление в скрипт. А вот Виталий об этом не забыл :)
"Underscore a.k.a. _" написал:Вы не сказали, что нужно включить перечисление в скрипт
Если прописывать не код, а значение идентификатора, то, думаю, не обязательно, но это будет нехорошо уже по другой причине, признаю :)