RitchTextBoxの2つのデータ保存について

タグの編集
投稿者 橋下のうなぎ  (社会人) 投稿日時 2012/4/18 11:57:44
VB6を使用している60才を過ぎた初心者です。すばらしいホームページで感心しています。
(そのうちVB2010にも挑戦したいです)
これまでTextBoxの文章をデータコントロール経由でmdbファイルのメモ型に保存しています。
SQL文で検索ワードのあるメモ型文章を検索して動作できています。
これからは、RitchTextBoxを使用して単語に色を付けて表示、保存したいと思っています。
・テストをしてみました。
RitchTextBoxに”12345”を入力して”45”を太字にしました。それを出力すると、
RitchTextBox.Textでプレーンなテキストが出力されました。"12345"
RitchTextBox.TextRTFで制御コード付きのASCIIが出力されました。{\rtf1\ansi\ans・・・・・・・・\fs18 123\b 45\b0 \par }

これを見ての、私の考えです。
両方のデータを 1レコードの2つのメモ型に保存して、検索はプレーンなテキストデータを使用して、
表示と編集はRitchTextBoxで 制御コード付きのASCIIのデータを使用します。
ここで疑問があります。
Q1: 両方のデータをmdbのメモ型に保存することは可能と思うのですが、それでよいでしょうか?
Q2: データが2倍になってしまうので、こんな運用でよいのでしょうか?
リッチテキストでの一般的な運用は、どうされているのでしょうか?
お教えください。よろしくお願いします。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2012/4/18 13:17:05
> 1レコードの2つのメモ型に保存して、検索はプレーンなテキストデータを使用して、
> 表示と編集はRitchTextBoxで 制御コード付きのASCIIのデータを使用します。
リッチテキストを保存するときには、私もそのような設計にしています。
(ただし、保存先は Oracle や SQL Server ですが)


なお、巨大な RTF (画像等を埋め込んだものなど)を大量に扱うようなケースでは
mdb が上限サイズ(約2GB)を越えないように配慮してください。

あるいは、mdb があまり巨大になってしまうという事態を避けるために、生のRTFデータは
別ファイルで保管しておき、mdb 内にはそのファイルへのパスを記録する手法もあります。


> Q1: 両方のデータをmdbのメモ型に保存することは可能と思うのですが、それでよいでしょうか?
Jet 4.0 形式の場合、メモ型には「536,870,910 文字(1,073,741,820 バイト)」を
格納できますので、通常の運用であれば十分でしょう。

ついでにメモ型の「Unicode 圧縮」指定については、プレーンテキスト側は圧縮無し、
リッチテキスト側は圧縮ありが良いかも知れません。(あまり大差は無いかも知れませんが)


> Q2: データが2倍になってしまうので、
2倍ということは無いような。

> こんな運用でよいのでしょうか?
実際に運用するデータ量を概算してみて、問題が無いかどうかを判断してみてください。

案件によっては、mdb の代わりにインデックスサービスで代用する方法や、
別のデータベース製品を採用するという手法も考えられます。
投稿者 橋下のうなぎ  (社会人) 投稿日時 2012/4/18 13:54:34
魔界の仮面弁士 様
ご丁寧な ご説明ありがとうございます。
現在ファイルサイズは5M程度なので十分使えそうです。
開発意欲が沸いてきました。ありがとうございました。
投稿者 橋下のうなぎ  (社会人) 投稿日時 2012/5/11 11:52:27
魔界の仮面弁士 様

>なお、巨大な RTF (画像等を埋め込んだものなど)を大量に扱うようなケースでは
>mdb が上限サイズ(約2GB)を越えないように配慮してください。

>あるいは、mdb があまり巨大になってしまうという事態を避けるために、生のRTFデータは
>別ファイルで保管しておき、mdb 内にはそのファイルへのパスを記録する手法もあります。

ご教示いただきました通り、現在、VB6 RitchTextBoxに wordファイル等をドラッグしてアイコンとして入れられています。これはショートカットの様です。目的は達成しています。mdbにも登録できています。
そこで心配なのがオペレーターがファイル自体を入れてしまうことは 起きるのでしょうか?

お話の中では、ファイル自体をRitchTextBoxに入れることが可能の様です。
その仕組みを出来れば把握しておきたいと思います。
よろしくお願いいたします。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2012/5/11 13:32:09
> 現在、VB6 RitchTextBoxに
誤記かと思っていましたが、どうやらスペルを間違って記憶されているようで…。


> オペレーターがファイル自体を入れてしまうことは 起きるのでしょうか?
下記のような文書を作成することは可能です。
(違いが分かるよう、AutoVerbMenu プロパティを True にしてあります)







> ファイル自体をRitchTextBoxに入れることが可能の様です。
これは、OLE オブジェクトのリンクと埋め込みというものです。

# ちなみに、OLE(オーレ、あるいは オーエルイー) の正式名は
# "Object Linking and Embedding" です。蛇足ですが。


Excel を起動して、そのメニューから [挿入]-[オブジェクト] を使って、
Word ファイルや BMP ファイルを Excel 文書内に埋め込んでみてください。

そのとき「リンク」か「埋め込みか」を選択できるはずです。

それをクリップボード経由で貼りこむことで、RichTextBox 内に
ファイルを埋め込むことができます。


あるいは下記のようにして、プログラムから埋め込むことも可能です。

Dim oo As OLEObject
Set oo = RichTextBox1.OLEObjects.Add(Source:="C:\temp\test.doc")
oo.DisplayType = rtfDisplayContent
投稿者 橋下のうなぎ   (社会人) 投稿日時 2012/5/11 17:50:41
ご回答ありがとうございます。
まだ良く分からないため もう少し学習してみます。
よろしくお願いいたします。