Visual Studio 2017 에서 레포팅 기능을 사용하기 위해서 도구에 ReportViewer 컨트롤을 추가하고 RepoverViewer 를 WebForm에 추가 하니 아래와 같으 오류가 발생하였다.

 

설치 환경을 확인해 보니 설치되어 있는 Mircosofr Ddls Report Designer for Visual Studio의 버전와 ReportViewer의 버전이 서로 다르게 되어 있는 것을 확인 할 수 있었다.

도구 -> 확장 및 업데이트를 통해 설치 했던 Microsoft Rdlc Report Designer for Visual Studio의 버전은 15.3.1 버전이었다.

 

내가 추가 했던 ReportViewer 컨트롤의 버전은 10.0.0.0 버전이다. 기본으로 설치된 버전인것 같다.

Nuget 패키지 관리자를 통해서 Microsoft.ReportingServices.ReportViewerControl.WebForms 를 설치 하였다.

설치 버전은 150.1358.0 버전이다.

도구 상자 항목 선택을 통해서 ReportViewer를 다시 해야 한다. 찾아보기를 눌러서

"<솔루션 디렉토리>\packages\Microsoft.ReportingServices.ReportViewerControl.WebForms.150.1358.0\lib\net40\"  디렉토리의

Microsoft.ReportViewer.WebForms.dll 을 선택해서 추가해주면 된다. 설치하는 버전에 따라 경로가 일부 다를 수 있다.  

추가된 ReportViewer의 버전을 확인하면 15.0.0.0으로 나오는것을 확인 할 수 있다.

 

솔루션 경로를 모를 경우에는 솔루션 타맥기의 솔루션에서 마우스 오른쪽 버전을 눌러서 파일 탐색기에서 폴더 열기를 이용해서 확인 할 수 있다.  

새로 추가한 ReportViewer 컨트롤을 WebForm에 추가해 보니 정상적으로 사용이 가능했다.

 

 

XE를 사용하다 보면 첨부파일이 123/456/과 같은 경로에 저장되는 것을 볼수 있습니다.

http://<홈페이지 URL>/123/456/<파일명>

 

 

XE는 파일을 저장할때 회원고유번호 등으로 폴더를 순환적으로 생성하여 저장합니다.

 

이 정보를 가져오기 위해서는 getNumberingPath 함수를 이용하면 됩니다.

 

 

예를 들어 회원정보를 조회할 수 있는 페이지를 만든다면 회원정보를 이용하여 회원사진이 저장된

 

파일경로를 다음 같은 함수를 만들어서 가져올 수 있습니다.

 

 

사용자고유번호를 XE의 방식에 맞게 파일 경로로 변경해 주는 함수를 먼저 생성하고

 

<%!

   private int size = 3;

 

    private String getNumberingPath(int no, int size){

                     int mod = (int)Math.pow(10, size);

        String output = String.format("%0"+size+"d/", no%mod);

                     if(no >= mod) { output += getNumberingPath(no/mod, size);}

                     return output;

   }     

%>

 

 

다음과 같은 방법을 이용해서 파일을 가져 올 수 있습니다.

 

 

<img src='http://<XE URL>/files/member_extra_info/profile_image/<%=getNumberingPath(getMember_srl(), size) + files[i].getName()%>'

 

빨간색 부분은 환경에 맞게 수정하시면 됩니다.

 

getMember_srl()은 member_srl을 getNmae은 이미지 파일이름을 가져 오는 부분입니다.

 

 

 

 

 

 

 

 

TextBox에 숫자만 입력 받고 싶을때는 keypress 이벤트를 활용할 수 있다.

Private Sub textbox1_TextKeyPress(ByVal sendr As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textbox1.KeyPress

If Not IsNumeric(e.KeyChar) Then <- 입력된 키가 숫자 인지를 구분
MsgBox("숫자만 입력해 주세요")
e.KeyChar = ControlChars.NullChar <- 입력된 키의 값을 삭제
End If

End Sub

 

+ Recent posts