2014-02-10 4 views
0

는 그래서 여기가가는 시간이 보드에 다른 질문에 둘러보고를 보냈지 만 유사한 아무것도 찾을 수 없습니다 Fetch Query에서 최대 문자 수와 관련하여 온라인 CRM 2011 해당 문제를 방지하려면 "모든 연락처"또는 "최대 5 개의 연락처 선택"옵션이있는 드롭 상자가 필요합니다.변경 SSS 보고서 조건

"모든 연락처"옵션이 선택된 경우 가져 오기 명령문에서 조건을 제거하고 5 개까지 선택을 선택한 경우에만 조건을 포함합니다.

어떻게해야합니까?

추가 질문이 있으면 알려주세요. 는 SQL 자체가 수동으로 구축하는 문자열 식을 수 있기 때문에

+0

Nick 당신은 저장 프로 시저를 사용하여 이것을 할 수 있습니까? – Hiten004

+0

불행히도 CRM 2011 온라인을 사용하고 있으므로 fetch XML을 사용하는 것으로 제한됩니다. 가져 오기 쿼리를보고 싶으십니까? – Nick

+0

필자는 havent이 XML을 가져 오려고 시도했지만 유사한 요구 사항에 대해 Expression을 사용하여 쿼리 정의를 설정했습니다. 이것이 가져 오기 XML 데이터 세트에서 가능합니까? –

답변

0

사용자 정의 코드를 사용하여 SQL을 구축 할 수 있습니다. 의 당신의 SQL이 순간에 다음과 같습니다 가정 해 봅시다 :

SELECT ThisField, ThatField 
FROM Contacts 
WHERE ContactId IN @Contacts 

하자의 변화 그 SQL 빌드 문자열 표현식 :

="SELECT ThisField, ThatField " 
& "FROM Contacts " 
& "WHERE ContactId IN @Contacts " 

지금 우리가 떨어져 @Contacts 매개 변수를 끌어 의해서만 선택해야합니다을 ContactId 선택한 다섯 이하의 연락처가있는 경우 :

Function ContactsSQL(ByVal parameter As Parameter) AS String 
    Dim Result As String 
    Result = "" 

    If parameter.IsMultiValue Then 
    If parameter.Count <= 5 Then 
     Result = "WHERE ContactId IN (" 
     For i As integer = 0 To parameter.Count-1 
     Result = Result + CStr(parameter.Value(i)) + ", " 
     Next 
     Result = Left(Result, Result.Length - 2) + ") " 
    End If 
    End If 

    Return Result 
End Function 

이 기능은 사기를 선택하는 SQL WHERE 절을 빌드는 5 개 이하가 선택되었을 경우에만 적용되며, 그렇지 않으면 빈 문자열이 다시 전달됩니다. 이제 우리는 우리의 SQL 표현식에서이 기능을 사용 : 당신이 여기에 Contacts 매개 변수 객체를 전달하는

="SELECT ThisField, ThatField " 
& "FROM Contacts " 
& Code.ContactsSQL(Parameters!Contacts) 

참고 아닌 Value 속성을. 사용자 지정 코드 함수의 Value 속성에 액세스합니다.