|
|
#1 |
|
Moderator
|
В языке Cи можно писать операторы присваивания с условием в одну строку:
Код: A = (B>100)? C : D; В навижене так писать нельзя, но конструкция подобного типа может пригодится в случае вывода числа в табличную часть формы - например когда в случае нуля надо вывести пустую ячейку, или, например, в случае превышения писать 'превышение' Парадигма программирования очень простая: булево условие надо превратить в целочисленный параметр и используя это число получить требуемую строку В общем, начальные условия задачи: Str1 - строка, которая выводится на при истинности условия Str2 - строка, которая выводится на при ложности условия Condition - условие, результат которого есть булево выражение TRUE или FALSE Тогда 1. Булево выражение Condition надо превратить в число 0 или 1. Сделать это можно, например, так: Код: STRLEN(FORMAT(Condition))-2 Можно это выражение инверснуть, т.е Код: 3-STRLEN(FORMAT(Condition)) дальше проще 2. Вот готовый код, который выводит Str1 или Str2 в завиcимости от условия Код: MESSAGE(COPYSTR(str1+str2, STRLEN(str1)*(STRLEN(FORMAT(Condition))-2)+1, STRLEN(str1)*(3-STRLEN(FORMAT(Condition))) +STRLEN(str2)*(STRLEN(FORMAT(Condition))-2))); Ну а теперь пара готовых примеров: 1) вывести в поле формы число Number. В случае если Number=0 выводит пустую строку Код: COPYSTR(' '+FORMAT(Number),
(STRLEN(FORMAT(Number=0))-2)+1,
(3-STRLEN(FORMAT(Number=0))) +STRLEN(FORMAT(Number))*(STRLEN(FORMAT(Number=0))-2))Код: COPYSTR('НОРМА'+'ПРЕВЫШЕНИЕ',
STRLEN('НОРМА')*(STRLEN(FORMAT(Number>100))-2)+1,
STRLEN('НОРМА')*(3-STRLEN(FORMAT(Number>100)))
+STRLEN('ПРЕВЫШЕНИЕ')*(STRLEN(FORMAT(Number>100))-2)) |
|
|
|
|
#2 |
|
Участник
|
Зачем?
Если все так будут писать, я с ума сойду.Код: IF Number>100 THEN Str := 'Превышение' ELSE str:='Норма'
__________________
Должен остаться только один. |
|
|
|
|
#3 |
|
Moderator
|
В SourceExpr условие IF не запихаешь...
|
|
|
|
|
#4 |
|
Участник
|
|
|
|
|
|
#5 |
|
Участник
|
OnFormat
|
|
|
|
|
#6 |
|
Участник
|
Yes Nо
Да Нет На разных языках по разному работает, можно попробовать Код: strpos(format(false,0,2),'1') Код: COPYSTR('ПревышениеНорма',strpos('0ревышение1',format(false,0,2)),10)Самый красивый вариант Код: STRSUBSTNO('%'+Format(strpos('01',format(True,0,2))),'Превышение','Норма')
STRSUBSTNO('%'+Format(strpos('01',format(True,0,2))),'Превышение',Variable)1)Вот готовый код, который выводит Str1 или Str2 в завиcимости от условия Код: SELECTSTR(strpos('10',format(false,0,2)),'Норма,Превышение')Код: SELECTSTR(strpos('10',format(Number=0,0,2)),' ,'+format(Number))Код: SELECTSTR(strpos('10',format(Number>10,0,2)),' Превышение,'+format(Number)) |
|
|