ОБСУЖДЕНИЕ

@DbLookup

11 ответов 4,1 тыс.
AI-выжимка обсуждения скоро
если делаю @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"....)
 
если делаю @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"....)
Всё правильно работает)
Так устроен оператор Иф - сначала вычисляются подъифные выражения слева направо, потом к ним применяются логические операторы уже справа налево. Что получается: берётся самое правое значение, оно фолс, а к нему применяется лог. умножение, т.е. уже фолс полюбэ, итог: дальше можно не вычислять и перейти по условию фолс.
Что можно:
Вычислять подъифные выражения заранее и уже к ним лог.операторы
Или поменять местами операнды для И
Или использовать вложенные Ифы для каждого сравнения, их же может быть далеко не два (тут уже не ошибёшься)
 
Всё правильно работает)
Так устроен оператор Иф - сначала вычисляются подъифные выражения слева направо, потом к ним применяются логические операторы уже справа налево. Что получается: берётся самое правое значение, оно фолс, а к нему применяется лог. умножение, т.е. уже фолс полюбэ, итог: дальше можно не вычислять и перейти по условию фолс.
Что можно:
Вычислять подъифные выражения заранее и уже к ним лог.операторы
Или поменять местами операнды для И
Или использовать вложенные Ифы для каждого сравнения, их же может быть далеко не два (тут уже не ошибёшься)
Код:
@If(result="Тест2";b="";@If(result="Тест1"; b="Тест1"; b=""));

@If((b="Тест1" )...
если Тест2 есть, то верно, если Тест2 нет, то не отрабатывает @If(result="Тест1"; b="Тест1"; b="")
 
))
@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
 
))
@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
 
да, вроде уже 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)
 
вывожу значения в дополнительное поле
Код:
res :=@DbLookup ( "" : "NoCache"; "" ; "view" ; Field; 2 ) ;
resful=@Subset(res;1);
@SetField("myField";res) - Тест1; Тест1; Тест2 (всё верно)
@SetField("myField";resful) - пусто
 
вывожу значения в дополнительное поле
Код:
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.
 
А если так @Subset(@Trim(res;1)) ?
а так, стопудов, сработает) - первый элемент пустой
тут надо уточнить - что чекается ваще?
1 ток одно значения? (которое стопудов получается корректно из лукапа)
2 первое значение (не пустое?) лукапного списка
3 весь список "огласите пжалста"(цы)
все элементы списка должны удовлетворять условию или хотя бы один?
 
а так, стопудов, сработает) - первый элемент пустой
тут надо уточнить - что чекается ваще?
1 ток одно значения? (которое стопудов получается корректно из лукапа)
2 первое значение (не пустое?) лукапного списка
3 весь список "огласите пжалста"(цы)
все элементы списка должны удовлетворять условию или хотя бы один?
фух , да , так работает @Trim(....
надо 3й вариант, то есть хотя бы один должен соответствовать условию, сейчас проверяю, но вроде отлично работает! СПАСИБО всем за помощь
 

Статистика тем

Создано
Irina,
Последний ответ от
Irina,
Ответы
11
Просмотры
4 147