Sun Report Builderで表示されないフィールドがある †
| ページ | OpenOffice.org FAQの登録ページ |
|---|---|
| 投稿者 | GAKU |
| 分類 | |
| 優先順位 | |
| 状態 | |
| カテゴリー | |
| 投稿日 | 2009-07-01 01:38:37 (水) |
| OS | Windows XP |
| 依存するページ | |
| バージョン |
メッセージ †
| 回答ページでは行末に「~」を付加する必要はありません |
イベントの出展者情報を管理しています。
出展者情報テーブルの設定
フィールド名 タイプ
ID INTEGER(整数)
氏名 VARCHAR(テキスト)
住所 VARCHAR(テキスト)
電話番号 VARCHAR(テキスト)
出展区分 VARCHAR(テキスト)
メッセージ VARCHAR(テキスト) 長さ200
(関係のないフィールドは省略しています)
このテーブルから、出展区分(一般・後援者、etc.)を指定して抽出するクエリー1を作成し、そのクエリーを元に、レポート作成を試みています。
クエリー1をSQLで表示すると以下の通りで、抽出も正しく行われます。
(クエリー1)
SELECT "出展者情報テーブル"."id" , "出展者情報テーブル"."氏名" , "出展者情報テーブル"."住所","出展者情報テーブル"."電話番号", "出展者情報テーブル"."メッセージ" FROM "出展者情報テーブル" WHERE "出展者情報テーブル"."出展区分" = :区分
Sun Report Builderでレポートを作成すると、レポートを表示するためのウィンドウは開くのですが、レポートは全く表示されません。
そこで、"メッセージ"のフィールドを抽出しないクエリー2を作成し、"メッセージ"を表示しないレポートを作成すると、正しいレポートが表示されます。
(クエリー2)
SELECT "出展者情報テーブル"."id" , "出展者情報テーブル"."氏名" , "出展者情報テーブル"."住所","出展者情報テーブル"."電話番号" FROM "出展者情報テーブル" WHERE "出展者情報テーブル"."出展区分" = :区分
また、以下のように"メッセージ"を抽出するクエリーで、エイリアスを指定し、そのエイリアスを表示するレポートを作成すると、レポートは表示されるのですが、エイリアス"コメント"の内容は表示されません。
(クエリー3)
SELECT "出展者情報テーブル"."id" , "出展者情報テーブル"."氏名" , "出展者情報テーブル"."住所","出展者情報テーブル"."電話番号", "出展者情報テーブル"."メッセージ" AS "コメント" FROM "出展者情報テーブル" WHERE "出展者情報テーブル"."出展区分" = :区分
これらの現象は、出展者情報テーブルの"メッセージ"フィールドのが長さが200と長いことに起因しているのでしょうか?
また、正しくレポート出力する方法があれば、教えて下さい。
よろしくお願いします。
サンプルの提供は可能でしょうか †
M.Kamataki (2009-07-01 07:10:32 (水))
問題の再現のためにサンプルを作成することは可能でしょうか。テーブルの内容を公開可能なものに変更していただき、本ページに添付してください。添付方法は「当サイトの使い方/高度な使い方」をご覧ください。
p.s.1752は削除しておきました。
サンプル作成してみました。 †
GAKU (2009-07-03 00:41:44 (金))
M.Kamatakiさま
サンプル作成してみました。
クエリー1・2・3それぞれを使ったレポート1・2・3を作ってます。
レポート1は当初の質問通り、「レポートのウィンドウが開くだけでレポートが表示されない状態」が再現されました。
ただ、レポート3は、「レポートは表示されるが、エイリアス"コメント"の内容は表示されない状態」は再現せず、レポート1と同じ状況となりました。
お手数ですが、よろしくお願いします。
メッセージの内容 †
ike@九州 (2009-07-03 10:21:33 (金))
新規に作成した場合問題ありませんでした。
けれど、サンプルだと再現してしまいます。のでメッセージの内容に不具合があるようなのでWriterにメーッセージをコピペして見てみると、メーッセージの中に 0B(Vertical Tabulation(垂直タブ)) 制御コードが含まれていました。
Writer 上では"#"として表示され、Calcにコピーして =code(文字列)でコード取得。
id = 1、5 のメッセージの内容を方向キーで移動していると見た目移動しない部分にコードが含まれます。それを削除すると無事に表示されました。
どのようにして、その制御コードを入れる事が出来るのかは分かりませんでした。
原因はデータ側にありました †
M.Kamataki (2009-07-03 11:12:32 (金))
ike@九州さんとかぶって書き込みがキャンセルされましたが、わたしも同じ結論に。せっかく書いたコメントですので、以下に貼っておきます。
「レポート1」「レポート3」でパラメータクエリーの入力ダイアログで「後援者」を指定するとレポートがちゃんと表示されました。
ということで、データ側に原因があると思われたので、調べるとidが「1」と「5」のメッセージ欄に「0x0b」(垂直タブ)のコントロールコードが紛れ込んでいました。
エディタのxyzzyに文字列を貼り付けると以下のように問題の箇所がわかりました。
id=1のメッセージ欄植物タンニンでなめした革を使い、彫り、染色、縫製すべて手作業で行っています。^Kすてきな出会いがあります様、楽しみにしています。id=5のメッセージ欄
木のぬくもりを感じると、やさしい気持ちになれる気がします。いつものくらしに“木のもの”ひとついかがですか。^K今年も、たくさんの出会いを楽しみにしています。それぞれのレコードで表示されていない「^K」(垂直タブ)を削除してください。表示されていないのですが、カーソルを動かしてみるとわかると思います。
データに垂直タブが紛れ込んだ理由は考えられるでしょうか。
p.s. SUN Report Builderが垂直タブのようなコントロールコードを無視してくれないというのも問題がある気はします。
ありがとうございました †
GAKU (2009-07-03 15:01:31 (金))
ike@九州さん、M.Kamatakiさん、ありがとうございます。
確かにid=1とid=5のデータから「^K」を削除すると、正しいレポートが作成されました。
サンプルデータを作る時、メッセージフィールドだけは本物を流用したので、再現したのだと思います。
このデータは、元々ファイルメーカーで入力管理していたものを、csv形式にエクスポートし、それをBASEにインポートしたものです。
どこの段階で、「^K」が紛れ込んだのかはわかりませんが、本物の方も「^K」を削除してトライしてみます。
データ件数が多いため、時間がかかると思いますので、これで完了としてください。
ありがとうございました。
やはり元のデータはファイルメーカーでしたか †
M.Kamataki (2009-07-03 15:17:24 (金))
ファイルメーカーのフィールドのデータ内に「改行」が含まれていると、CSV出力時に「垂直タブ」に変換されるようですね。もし、ファイルメーカーを利用できるなら、以下のページに垂直タブを扱う方法が書かれていました。
ファイルメーカーのデータをcsvに書き出すと・・・
http://oshiete1.goo.ne.jp/qa1965455.html
csvの状態なら、コントロールコードを扱えるエディタで置換元を「垂直タブ」、置換先を文字列なしで全置換すれば、いっぺんに「垂直タブ」を全削除できます。上記で紹介したxyzzyでもできました。
ありがとうございます †
GAKU (2009-07-09 00:36:31 (木))
M.Kamatakiさま
いろいろご指導ありがとうございます。
データの方は、BASEにインポートしたあとに、既に色々と入力したり、変更したりしているので、地道に1レコードずつ確認して、垂直タブを削除しました。
時間かかりましたが、無事に求めていたリストを出力できました。
ありがとうございました。
Re: ありがとうございます †
M.Kamataki (2009-07-10 10:18:57 (金))
>データの方は、BASEにインポートしたあとに、既に色々と入力したり、変更した
>りしているので、地道に1レコードずつ確認して、垂直タブを削除しました。
お疲れ様です。
なお、Calcの表形式データからBaseのテーブルカテゴリにDrag&Dropすると簡単にテーブルへのインポートができます(テーブルコピー用のウィザードが起動します)。データの加工は、加工しやすい形式にして加工しやすいツールを使うのが、結局は早道だと思います。以後、参考にしてください。

使い方