全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1002
推到 Plurk!
推到 Facebook!

oracle 資料型態為long 顯示問題

答題得分者是:P.D.
viya
一般會員


發表:16
回覆:19
積分:7
註冊:2008-09-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2012-03-12 18:00:43 IP:202.3.xxx.xxx 訂閱
各位好:
我想將oracle 資料庫中,透過DBGRID顯示.
利用版上前輩所提供的方式,如下

[code delphi]
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
var
P: array[0..50] of char; {array size is number of characters needed}
bs: TStream; {from the memo field}
hStr: string;
begin
if Field is TMemoField then //若欄位屬TMemoField則處理
begin
with (Sender as TDBGrid).Canvas do
begin
//由資料庫欄位裡讀出資料至TStream
bs :=Query1.CreateBlobStream(Field, bmRead);
FillChar(P, SizeOf(P), #0); {terminate the null string}
bs.Read(P, 50); {read 50 chars from memo into blobStream}
bs.Free;
hStr := StrPas(P); //PChar -->String
//處理#13#10 讓多行文字取代為空白
while Pos(#13, hStr) > 0 do {remove carriage returns and}
hStr[Pos(#13, hStr)] := ' ';
while Pos(#10, hStr) > 0 do {line feeds}
hStr[Pos(#10, hStr)] := ' ';
FillRect(Rect); {clear the cell}
TextOut(Rect.Left, Rect.Top, hStr);//畫出文字
end;
end;
end;
[/code]

資料讀出來,卻不是原來的結果.(原本資料為一串中文字)

{\rtf1\ansi\ansicpg950\deff0\deflang1033\deflangfe1028{\fonttbl{\f0\fswiss\fprq2\fcharset136 Arial;}}
{\colortbl ;\red0\green0\blue0;}
搜尋文章,發現這些為rtf檔格式的設定.

請問
1.我該怎麼處理,才能讓中文字顯示在dbgrid或是memo上??
2.可以透過sql語法直接轉換嗎??

以上.謝謝各位.
P.D.
版主


發表:571
回覆:3881
積分:3666
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2012-03-12 20:35:57 IP:118.169.xxx.xxx 未訂閱
rtf 資料透過 TRichEdit 可以完整顯示
fivker
一般會員


發表:24
回覆:38
積分:12
註冊:2006-12-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2012-03-13 08:37:35 IP:202.3.xxx.xxx 訂閱
非常感謝pd前輩的說明,我測了TRichEdit, 原來是未將PlainText改成False造成.
已可看到正確的資料.

想再請教:
1.可否在dbgrid上顯示
2.或透過sql command直接轉換 (資料庫為 oracle )

(因原帳號一直無法登入,故使用同事的帳號登入)

===================引 用 P.D. 文 章===================
rtf 資料透過 TRichEdit 可以完整顯示
編輯記錄
fivker 重新編輯於 2012-03-12 19:55:21, 註解 無‧
P.D.
版主


發表:571
回覆:3881
積分:3666
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2012-03-13 09:57:05 IP:118.169.xxx.xxx 未訂閱
1.為什麼發問與回帖兩組帳號不同人?
2.如果是Delphi提供的DBgrid, 那你必須自己去改寫, 否則考慮用第三方控件 www.tmssoftware.com
因為你要的是 rtf 有包含所有內容的設定, 是不是command 可以直接轉, 說真的, 沒有研究
===================引 用 fivker 文 章===================
非常感謝pd前輩的說明,我測了TRichEdit, 原來是未將PlainText改成False造成.
已可看到正確的資料.

想再請教:
1.可否在dbgrid上顯示
2.或透過sql command直接轉換 (資料庫為 oracle )


===================引 用 P.D. 文 章===================
rtf 資料透過 TRichEdit 可以完整顯示
viya
一般會員


發表:16
回覆:19
積分:7
註冊:2008-09-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2012-03-13 15:38:18 IP:202.3.xxx.xxx 訂閱
感謝您:

1.早上無法登入,故先借用他人的帳號回覆。
(順帶一提,發文的時間竟然晚於修文的時間,怪怪的 :p)

2.我大概搜尋了網路上的用法,好像也沒有提供sql command轉換.
目前只能先透過richtext元件。再次感謝PD前輩指教。


===================引 用 P.D. 文 章===================
1.為什麼發問與回帖兩組帳號不同人?
2.如果是Delphi提供的DBgrid, 那你必須自己去改寫, 否則考慮用第三方控件 www.tmssoftware.com
因為你要的是 rtf 有包含所有內容的設定, 是不是command 可以直接轉, 說真的, 沒有研究
===================引 用 fivker 文 章===================
非常感謝pd前輩的說明,我測了TRichEdit, 原來是未將PlainText改成False造成.
已可看到正確的資料.

想再請教:
1.可否在dbgrid上顯示
2.或透過sql command直接轉換 (資料庫為 oracle )


===================引 用 P.D. 文 章===================
rtf 資料透過 TRichEdit 可以完整顯示
系統時間:2017-10-23 21:20:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!