2010-06-07 5 views
2

SQL 2005 테이블에 RTF 필드가 있으므로 텍스트로 변환하여 표시해야합니다. 나는 다음과 같은 방법을 가지고 빠른 조사 후 ...SQL 서버의 RTF to TEXT

create function dbo.RTF2TXT(@in varchar(8000)) RETURNS varchar(8000) AS 
BEGIN 

DECLARE @object int 
DECLARE @hr int 
DECLARE @out varchar(8000) 

-- Create an object that points to the SQL Server 
EXEC @hr = sp_OACreate 'RICHTEXT.RichtextCtrl', @object OUT 
EXEC @hr = sp_OASetProperty @object, 'TextRTF', @in 
EXEC @hr = sp_OAGetProperty @object, 'Text', @out OUT 
EXEC @hr = sp_OADestroy @object 
return @out 

END 
GO 

select dbo.RTF2TXT('{\rtf1\ansi\ansicpg1252\uc1 aaa}') 

하지만 저는 여기에 결과에만 NULL 얻고있다 ... 이 문제가 될 수 무엇, 그것을 사용하는 것처럼이 보이는

답변

0

을 제안 해주십시오 RichTextBox 컨트롤을 만드는 CLR

  • 서식있는 텍스트 OCX가
  • CLR이 활성화
  • OLE를 활성화

(IIRC이는 노출 영역 도구를 통해입니다)입니다 SQL 서버에있는 것을 확인해 봤어 비슷한 코드를 사용하는 동일한 코드가 아닌 쓰레드 here이 있습니다.

또는 SSRS에이 정보가 필요한 경우 here에 SSRS를 통해 RTF를 텍스트로 변환하는 방법을 설명하는 멋진 기사가 있습니다.

1

나는 또한 동일한 requirment가 있지만 나는 SQL Server에서 어떤 richtext 컨트롤 dll이나 CLR을 사용하지 않는 것을 선호합니다. 내 서비스/데이터베이스 계층 프로젝트에서 System.Windows.Form.dll을 참조하여 동일한 작업을 수행합니다. 이 라이브러리를 .cs 파일 맨 위에 가져 오면 해당 클래스에 필요한 라이브러리를 가져 오거나 사용하고 코드를 작성합니다. 그리고 그것은 내 문제를 진정으로 해결해줍니다. 당신은 또한 이것을 시도하고 당신이 어떤 문제에 직면하면 알려주 수 있습니다. RTF를 변환하려면

단계는 바람직 ServiceLayer/데이터베이스 계층이 referance에 추가 (가 system.windows.forms.dll에 referance에 추가 프로젝트에서 SQL 서버

1)에 RichTextControl의 OCX/DLL 또는 CLR없이 텍스트/도메인 모델 계층/비즈니스 로직 계층)

2) 가져 오기/우리는 클래스

VB.Net --> Import Systems.Windows.Forms 
C#.Net --> using System.Windows.Forms; 

3의 상단에/사용에 필요한 namesapce을 가져올 경우) 클래스 파일을 사용하여 당신이 원하는 위치에 코드를 아래에 추가 RTF를 일반 텍스트로 변환하십시오.

System.Windows.Forms.RichTextBox rtBox = new System.Windows.Forms.RichTextBox(); 
rtBox.Rtf = actionNotes.Notes; // <your database table's RTF field data assigned to rtBox's Rtf property> 
string s = rtBox.Text; //This will convert your assignd RTF Field data in Plain Text 

return s; //Return this string veriable or assign it to the control where you want to display your data in Plain Text format