문제

VisureStudio 2005에 포함 된 Crystal 보고서를 사용하고 있습니다. 이미지 파일의 경로를 구축 한 다음 해당 이미지를 보고서에 표시하여 이상적으로 런타임에 보고서에 표시된 이미지를 변경하고 싶습니다.

이 버전의 Crystal Reports로 이것을 달성 할 수있는 사람이 있습니까?

도움이 되었습니까?

해결책

직장에서 우리는 이미지를 데이터 가능의 필드로 보고서에 넣음으로써이를 수행합니다. 예쁘지는 않지만 작업이 완료됩니다. 물론이 솔루션은 데이터 세트를 통해 데이터를 보고서로 푸시해야합니다. 나는 항상 이것이 최선의 해킹이라고 느꼈다. 이미지 매개 변수가 CR의 가능성이 있기를 바랍니다.

편집하다: 결정 보고서를 평범한 오래된 물체에 묶는 경우 보고서가 이미지로 취급하기 위해 바이트 [] 속성을 노출하려는 경우 주목할 가치가 있습니다.

다른 팁

나는 마침내 그것을 사용하여 솔루션에 도달했다 byte[] Josh가 여기에 게시했습니다.

이 솔루션은 평범한 오래된 C# 객체를 사용하여 크리스탈 보고서를 채우는 경우에 적용됩니다 (참조 http://www.aspfree.com/c/a/c-sharp/crystal-reports-for-visual-studio-2005-in-csharp/ 이 접근법에 대한 정보는).

C# 클래스에서 다음 코드를 삽입하십시오.

private static byte[] m_Bitmap = null;

public byte[] Bitmap
{
   get
   {
      FileStream fs = new FileStream(bitmapPath, FileMode.Open);
      BinaryReader br = new BinaryReader(fs);
      int length = (int)br.BaseStream.Length;
      m_Bitmap = new byte[length];
      m_Bitmap = br.ReadBytes(length);
      br.Close();
      fs.Close();
      return m_Bitmap;
   }
}

이제 "데이터베이스 확인"옵션을 사용하여 C# 객체 매핑을 CR에서 업데이트하십시오. 그런 다음 봐야합니다 Bitmap CR 필드로서의 속성. 양식으로 드래그하십시오. iblobfieldobject 유형입니다. 달리면 이미지가 보일 것입니다.

나는 또한이 질문을 가지고 있었고 (그리고 당신의 투표)!

이후 C# 객체 속성을 통해 바이트 배열을 사용하여 솔루션을 찾았습니다. 별도의 답변을 참조하십시오. 참조를 위해이 답을 여기에 남겨 둡니다 ...

내가 제안한 내용은 다음과 같습니다 (그러나 C#-2005와 C#-2008에서 시도하고 실패했습니다).

  1. 디렉토리를 선택하고 BMP를 거기에 배치하십시오 (예 : "c : temp image.bmp").
  2. Cr-designer에서 a) 마우스 오른쪽 버튼을 클릭-> 삽입-> 올레 오브젝트 ... b) "파일 만들기"c) "링크"확인란 D) 단계 1에 정의 된 BMP를 찾아 선택하십시오. 확인 f) 이미지를 양식에 놓습니다.
  3. C# 코드에서 런타임에서 이미지를 덮어 쓰기/업데이트하십시오. 이론적으로, 당신은 삽입했기 때문에 링크 이미지 파일에는 양식이 새로 고침되면 업데이트됩니다.

나는이 접근법에 운이 없었습니다. 형태를 처음 설계 할 때 이미지가 나타납니다 (2 단계). 그러나 런타임에 이미지가 나에게 업데이트되지 않습니다. 이 시점부터 상황이 정말 이상해집니다. CR은 사라지지 않는 일종의 이미지를 캐시하는 것 같습니다. CR-Designer에서 OLE 객체 링크를 삭제할 수 있지만 재현하면 항상 원래 이미지와 같은 크기의 블랙 박스를 얻습니다 (이미지 .BMP의 크기를 변경하더라도).

조건부 공식을 사용하여 이미지 위치를 설정할 수도 있습니다. 보다 크리스탈 보고서 : 동적 이미지.

이미지 경로 와이 페이지의 자습서를 포함하는 매개 변수를 사용하는 조합을 사용해보십시오. http://www.idautomation.com/crystal/streaming_crystal.html

그런 다음 8 단계에서 하드 코딩 된 경로 대신 매개 변수를 사용하십시오.

내가 유용한 것을 찾은 또 다른 옵션은 사용하려는 사진을 삽입하는 것입니다. 그래픽을 그에 따라 배치 한 다음 그래픽을 마우스 오른쪽 버튼으로 클릭하고 그래픽 형식> 공통으로 이동하십시오. 억제 상자를 확인한 다음 X-2로 표시된 공식 버튼을 클릭하십시오. 공식 창에 들어가면 그래픽을 억제 해야하는지 여부를 결정하기위한 코드를 추가하십시오.

제 경우에는 여러 엔티티에 대해 하나의 송장 템플릿을 구축했습니다. 공식 창에서, 나는 단순히 회사 <> 1100을 썼는데, 이는 1100 이외의 회사의 송장이 실행될 때마다 1100 그래픽이 억제 될 것임을 의미했습니다.

바라건대 이것은 인생이 더 쉬워집니다 ...

Josh가 말했듯이 .. 데이터 세트로 이미지를 밀어야합니다. 또는 이미지를 데이터베이스 테이블에 한 번 넣고 하위 보고서로 여러 번 가져옵니다.

Visual Studio 2015에서 사용하는 현재 버전의 Crystal Reports (Visual Studio 2012+) 가이 기능을 지원합니다. 다음 단계를 따르십시오.

  1. 보고서에 사진을 삽입하십시오. 이것은 자리 표시 자 역할을합니다. '
  2. 사진을 마우스 오른쪽 버튼으로 클릭하고 형식 개체를 선택하십시오Right Click Image
  3. 그림 탭을 선택하고 공식 버튼을 누릅니다.Picture Tab
  4. 공식 창이 열립니다. 사진을 링크로 찾을 수있는 공식을 입력하십시오.

    if ({@isdonor} = "1") 그런 다음 "http://www.ny.org/images/aaf/picture1.jpg" 또 다른 "http://www.ny.org/images/aaf/picture2.jpg" Formula Editor그리고 당신은 끝났습니다!

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