@DbLookup

Irina

Green Team
31.05.2019
145
2
BIT
0
если делаю @If(result="Тест1" & result="Тест2"... то отлично отображает , если поставлю значение , которое не существует, то тоже отработает (@If(result="Тест1" & result="Тест3"... - сработает условие false), но вот если поставить @If(result="Тест1" & result!="Тест3"... то должно отработать true , а он переходит на условие из false

что делаю не так? я хочу сделать условие равно одному названию и не равно другому

Код:
result :=@DbLookup ( "" : "NoCache"; "" : "" ; "View" ; Field ; 2 )  ) ) ;

@If(result="Тест1" & result="Тест2"....)
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
45
если делаю @If(result="Тест1" & result="Тест2"... то отлично отображает , если поставлю значение , которое не существует, то тоже отработает (@If(result="Тест1" & result="Тест3"... - сработает условие false), но вот если поставить @If(result="Тест1" & result!="Тест3"... то должно отработать true , а он переходит на условие из false

что делаю не так? я хочу сделать условие равно одному названию и не равно другому

Код:
result :=@DbLookup ( "" : "NoCache"; "" : "" ; "View" ; Field ; 2 )  ) ) ;

@If(result="Тест1" & result="Тест2"....)
Всё правильно работает)
Так устроен оператор Иф - сначала вычисляются подъифные выражения слева направо, потом к ним применяются логические операторы уже справа налево. Что получается: берётся самое правое значение, оно фолс, а к нему применяется лог. умножение, т.е. уже фолс полюбэ, итог: дальше можно не вычислять и перейти по условию фолс.
Что можно:
Вычислять подъифные выражения заранее и уже к ним лог.операторы
Или поменять местами операнды для И
Или использовать вложенные Ифы для каждого сравнения, их же может быть далеко не два (тут уже не ошибёшься)
 

Irina

Green Team
31.05.2019
145
2
BIT
0
Всё правильно работает)
Так устроен оператор Иф - сначала вычисляются подъифные выражения слева направо, потом к ним применяются логические операторы уже справа налево. Что получается: берётся самое правое значение, оно фолс, а к нему применяется лог. умножение, т.е. уже фолс полюбэ, итог: дальше можно не вычислять и перейти по условию фолс.
Что можно:
Вычислять подъифные выражения заранее и уже к ним лог.операторы
Или поменять местами операнды для И
Или использовать вложенные Ифы для каждого сравнения, их же может быть далеко не два (тут уже не ошибёшься)
Код:
@If(result="Тест2";b="";@If(result="Тест1"; b="Тест1"; b=""));

@If((b="Тест1" )...
если Тест2 есть, то верно, если Тест2 нет, то не отрабатывает @If(result="Тест1"; b="Тест1"; b="")
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
45
))
@If(2 = 2;@If(2 != 3; "true";"false2");"false1") >>> true
@If(2 = 3;@If(2 != 3; "true";"false2");"false1") >>> false1
@If(2 = 2;@If(2 != 2; "true";"false2");"false1") >>> false2
 

Irina

Green Team
31.05.2019
145
2
BIT
0
))
@If(2 = 2;@If(2 != 3; "true";"false2");"false1") >>> true
@If(2 = 3;@If(2 != 3; "true";"false2");"false1") >>> false1
@If(2 = 2;@If(2 != 2; "true";"false2");"false1") >>> false2
да, вроде уже 150 раз проверила
Код:
res :=@DbLookup ( "" : "NoCache"; "" : "" ; "View" ; Field ; 2 ) ;
@If(res="Тест1"; @If(res!="Тест2"; b="Otbor1";  b="Otbor2"); @If(res="Тест2"; b="Otbor2";  b=""));
@If( b="Otbor1"  ...

если просто написать
res :=@DbLookup ( "" : "NoCache"; "" : "" ; "View" ; Field ; 2 ) ;
@If( res="Тест1"...
то работает отбор по 1 критерию, если написать @If(res="Тест2" & res="Тест1".... работает по 2 критериям , @If(res!="Тест2" & res="Тест1".... - не работает

@If( b="Otbor1" .. тоже не срабатывает как true , true будет , если b="". но в view проверяю есть реально и первый тест и второй, пробую второй удалять, т.е. первое условие true, но тоже только при b="" срабатывает.

но если @If(res="Тест1"; @If(res!="Тест2"; b="Otbor1"; b="Otbor2"); @If(res="Тест2"; b="Otbor2"; b="Otbor3"));
то @If( b="Otbor3" не работает

что-то вообще запуталась, он только на пусто срабатывает, он не видит при дополнительных if значений получается во view
 

rinsk

Lotus Team
12.11.2009
1 156
126
BIT
45
да, вроде уже 150 раз проверила
Код:
res :=@DbLookup ( "" : "NoCache"; "" : "" ; "View" ; Field ; 2 ) ;
@If(res="Тест1"; @If(res!="Тест2"; b="Otbor1";  b="Otbor2"); @If(res="Тест2"; b="Otbor2";  b=""));
@If( b="Otbor1"  ...

если просто написать
res :=@DbLookup ( "" : "NoCache"; "" : "" ; "View" ; Field ; 2 ) ;
@If( res="Тест1"...
то работает отбор по 1 критерию, если написать @If(res="Тест2" & res="Тест1".... работает по 2 критериям , @If(res!="Тест2" & res="Тест1".... - не работает

@If( b="Otbor1" .. тоже не срабатывает как true , true будет , если b="". но в view проверяю есть реально и первый тест и второй, пробую второй удалять, т.е. первое условие true, но тоже только при b="" срабатывает.

но если @If(res="Тест1"; @If(res!="Тест2"; b="Otbor1"; b="Otbor2"); @If(res="Тест2"; b="Otbor2"; b="Otbor3"));
то @If( b="Otbor3" не работает

что-то вообще запуталась, он только на пусто срабатывает, он не видит при дополнительных if значений получается во view
С @DbLookup ( "" : "NoCache"; "" : "" ; "View" ; Field ; 2 ) надо быть осторожным, может венуть несколько значений) надежнее использовать @Subset(res;1)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
471
С @DbLookup ( "" : "NoCache"; "" : "" ; "View" ; Field ; 2 ) надо быть осторожным, может венуть несколько значений) надежнее использовать @Subset(res;1)
а можно опцию [RETURNDOCUMENTUNIQUEID] использовать - тогда полюбому один вернет ;)
 

Irina

Green Team
31.05.2019
145
2
BIT
0
вывожу значения в дополнительное поле
Код:
res :=@DbLookup ( "" : "NoCache"; "" ; "view" ; Field; 2 ) ;
resful=@Subset(res;1);
@SetField("myField";res) - Тест1; Тест1; Тест2 (всё верно)
@SetField("myField";resful) - пусто
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
471
вывожу значения в дополнительное поле
Код:
res :=@DbLookup ( "" : "NoCache"; "" ; "view" ; Field; 2 ) ;
resful=@Subset(res;1);
@SetField("myField";res) - Тест1; Тест1; Тест2 (всё верно)
@SetField("myField";resful) - пусто
формулы так (@SetField) не будут работать (если это не агент, а форма) @DbLookup всавляйте в CFD поле (Computed For Display)
This function is most useful in agents, hotspot buttons, actions, and toolbar buttons. It does not work in column, selection, hide-when, window title, or form formulas.
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
45
А если так @Subset(@Trim(res;1)) ?
а так, стопудов, сработает) - первый элемент пустой
тут надо уточнить - что чекается ваще?
1 ток одно значения? (которое стопудов получается корректно из лукапа)
2 первое значение (не пустое?) лукапного списка
3 весь список "огласите пжалста"(цы)
все элементы списка должны удовлетворять условию или хотя бы один?
 

Irina

Green Team
31.05.2019
145
2
BIT
0
а так, стопудов, сработает) - первый элемент пустой
тут надо уточнить - что чекается ваще?
1 ток одно значения? (которое стопудов получается корректно из лукапа)
2 первое значение (не пустое?) лукапного списка
3 весь список "огласите пжалста"(цы)
все элементы списка должны удовлетворять условию или хотя бы один?
фух , да , так работает @Trim(....
надо 3й вариант, то есть хотя бы один должен соответствовать условию, сейчас проверяю, но вроде отлично работает! СПАСИБО всем за помощь
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!