문제

사용자 입력 매개 변수를 사용하고 ODBC 데이터 소스에 대해 실행되는 보고서를 Visual Studio에서 작성하고 있습니다.쿼리를 수동으로 작성하고 보고 서비스에서 where 절의 일부를 데이터베이스로 보내기 전에 매개변수 값으로 바꾸도록 하고 싶습니다.무슨 일이 일어나고 있는 것 같나요? @parmName 나는 대체될 것이 실제로 SQL 문의 일부로 전송되고 있다고 가정합니다.어딘가에 구성 설정이 누락되어 있습니까? 아니면 이것이 불가능합니까?

도구에서 필터 옵션을 사용하지 않는 이유는 이 옵션이 데이터베이스에서 전체 데이터 세트를 가져오고 SQL Server에서 필터링을 수행하는 것처럼 보이기 때문입니다.

도움이 되었습니까?

해결책

SQL 문을 표현식으로 처리해야 할 것 같습니다.예를 들어:

="Select col1, col2 from table 1 Where col3 = " & Parameters!Param1.Value 

where 절이 문자열인 경우 다음을 수행해야 합니다.

="Select col1, col2 from table 1 Where col3 = '" & Parameters!Param1.Value & "'"

중요한:SQL 표현식에 줄 바꿈을 사용하지 마십시오.그렇게 하면 오류가 발생합니다.

도움이 더 필요하시면 다시 연락주세요.

다른 팁

ODBC는 구 ""를 사용하지 않습니까? " 매개 변수의 구문?이 시도:

select col1, col2 from table1 where col3 = ?

그러면 매개변수의 순서가 중요해지지만 단순히 매개변수 값을 추가하는 것보다 SQL 주입에 덜 취약합니다.

ODBC를 통해 액세스 데이터베이스를 쿼리하는 동안 동일한 문제가 발생했습니다.

내 원래 쿼리: SELECT A.1 FROM A WHERE A.1 = @parameter 오류가 발생했습니다.다음으로 변경됨: SELECT A.1 FROM A WHERE A.1 = ?.

그런 다음 쿼리 매개변수를 보고서 매개변수와 매핑해야 합니다.

이 질문에 대해 약간 혼란스럽습니다. 간단한 매개변수 사용법을 찾고 있는 경우 표기법은 다음과 같습니다.*paramName* 그러나 구조적으로 변경하려는 경우 WHERE 절(sql+에서 ?를 사용하는 것처럼)을 사용하면 보고서 내에서 사용자 정의 코드를 사용하여 쿼리에 필요한 SQL을 반환하는 함수를 정의해야 합니다.

안타깝게도 사용자 정의 코드를 사용할 때 매개변수는 생성된 쿼리에서 직접 참조할 수 없지만 결과 문자열에 값을 연결해야 하므로 다음과 같은 가능성이 있습니다. SQL 주입.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top