Firebirdのデータベースフォームで複数行のテキスト入力ができない

BaseでHSQLDBのLONGVARCHARというフィールドタイプは、Firebirdに変換すると長さ0のCLOB[BLOB]に変換されて、フォームでも改行を含むテキストを入力することができます。

しかし、Firebirdで新規にデータベースを作るときに、フィールドタイプにCLOB[BLOB]を指定してもフォームでテキストを入力することができません。

ただし、テーブルにはCtrl + Enterで改行を含むテキストを入力することができます。

Firebirdで新規データベースを作るときに、フォームに複数行のテキストを入力するにはどうしたらいいのでしょうか?

  • LibreOffice: 6.4.3
  • OS: Windows10

問題解決ではなく、自分用のデバッグの手がかりメモ。

  1. VARCHAR型、CLOB型、BLOB型のフィールドを持つテーブルを作成。念のためにデータも作っておく。一度テーブルの定義、テーブルのデータそのもの、ファイル自体、それぞれの段階で保存してリロードする。

  2. Create Query in SQL View

  3. メインメニューからEdit->Run SQL directlyを選択する。

  4. 以下のコマンドを入力

    SELECT relfields.RDB$RELATION_NAME,relfields.RDB$FIELD_NAME,fields.RDB$FIELD_TYPE, fields.RDB$FIELD_SUB_TYPE FROM RDB$RELATION_FIELDS relfields JOIN RDB$FIELDS fields on (fields.RDB$FIELD_NAME = relfields.RDB$FIELD_SOURCE)

  5. RELATION_NAMEがテーブル名となっていて、FIELD_NAMEが自分が先程作成したフィールドの名前になっているものを探す。

  6. FIELD_TYPEやFIELD_SUB_TYPEを確認する。

  7. 状況確認のため、HSQLDBからFirebirdに変換したものについても同様のクエリを発行し、先程のデータと比較する。

参考として、Firebird - RDB$FIELDS を併用する。LibreOfficeで使っているFirebirdのバージョンによっては色々頭の中で補正が必要なこともあるかも?

あんまり関係なかったかも。

https://opengrok.libreoffice.org/xref/core/wizards/com/sun/star/wizards/document/FormHandler.java?r=b59f4fe0#139

コントロール変換後、テキストタイプ変更をお試しください。

フォーム上では各コントロールがラベルとグループ化されているので
まずは対象コントロールのグループ化を解除します(コントロールを右クリックして「グループ解除」)

続いて、入力するコントロールを選択し、右クリック → コントロール で確認すると
CLOB[BLOB]型のフィールド入力用のフォームコントロールは「イメージコントロール」になっていませんか?

コントロールを「イメージコントロール」から「テキストボックス」に変換すると入力できると思います。

ちなみにフォームデフォルトでテキスト入力できるVARCHAR型の入力フォームコントロールは「テキストボックス」になるようです!

入力するコントロールを選択し、右クリック → 置換候補 → 「テキストボックス」で変換可能です
テキストボックスのデフォルト値では1行しか入力できません

右クリック → コントロール → 全般タブ → テキストタイプ を「1行」から「複数行」に変更します
フォーマット付き複数行 も選択できますが、何も表示されなくなります(使い方が分かりません)

Windows-10-64
LOバージョン: 6.2.7.1 (x64)

入力するコントロールを選択し、右クリック → 置換候補 → 「テキストボックス」に変換してから、

右クリック → コントロール → 全般タブ → テキストタイプ を「1行」から「複数行」に変更することで複数行のテキストを入力することができるようになりました。

ありがとうございました。