2017-03-02 5 views
0

은 내가 쿼리, 내 사용자 지정 쿼리있는 동적 범위 간단한 보기 있습니다.동적 범위가있는 쿼리를 기반으로보기를 새로 고치거나 동기화하는 방법은 무엇입니까?

클래스 SysQueryRangeUtil 내 맞춤형 public static 메서드를 삽입하고 사용자 정의 쿼리에 복사했습니다. 이 범위는 잘 작동합니다. 하지만 범위 조건이 바뀌면 새로운 뷰 (새롭게 선택된 레코드로)를 볼 때 AOT 내 뷰에서 동기화해야하는 문제가 있습니다.

그러나이 작업은 간단한 SystemUser를 수행 할 수 없습니다.

보기에서 동적 범위를 사용하고 지속적으로 동기화하지 않는 방법이 있습니까?

동적 범위는 curUserId()과 관련이 있습니다. 변경하면보기/양식보기 사용자는 표시된 레코드를 변경해야합니다. 차이점을보고 싶다면 매번 동기화해야하지만 나에게는 유용한 솔루션이 아닙니다.

DynamicRangeOnQuery

MYVIEW enter image description here

모두 감사합니다!

답변

1

검색어에 범위를 사용하지 말고 양식 수준에서이 논리를 이동하십시오.

양식의 classDeclaration 메서드에서 QueryBuildRange 변수를 선언하십시오. 양식 데이터 소스에

재정 init 방법 :

public void init() 
{ 
    ; 

    super(); 

    queryRange = Table1_ds.query().addRange(MyView_ds.queryBuildDataSource(), AccountNum); 
    queryRange.status(RangeStatus::Hidden); 
} 

재정의 양식 데이터 소스에 executeQuery 방법 :

public void executeQuery() 
{ 
    ; 

    queryRange.value(filterBycurUserId()); 

    super(); 
} 
+0

이 @Aliaksandr Maksimau 감사드립니다. 하지만 ctrl + G 값으로 필터링해야합니다. 이런 식으로 할 수는 없지만 RangeStatus :: Locked 또는 Open을 사용하면 폼에서 무료 쿼리를 수행 할 수 있습니다. – ulisses

+1

'addRange' 대신'Table1_ds.query(). addQueryFilter()'를 사용하십시오. 모든 사용자 ctrl-G는 범위가 아닌 필터입니다. –

+0

감사합니다. @Aliaksandr Maksimau. – ulisses