1

私は通常 Crystal を使用しませんが、これを行う方法を探して 2 日近く費やしました。

問題は、レポートに表示する必要がある多数のテキスト行があることですが、8 行を超えたところで切り捨てて「詳細」プロンプトを表示し、残りの部分を確認する必要があることをユーザーに通知する必要があります。詳細はオンライン。これはもともと、個々の行がすでにサイズに折り返されているためデータを保存し、数式で行を数え、条件付きで別の「詳細」フィールドを表示することで処理されていました。その後、テキストに html を使用する機能が追加されましたが、これにより、現在の方法では正しくラップされず、html マークアップが表示されます。

テキストを単一のフィールドに結合し、HTML テキストの解釈を使用して、テキストの長さを制限しない他の 7 つのレポートに正しく表示するデータベース関数を作成しました。最大行数は、テキスト サイズを制限するのに最適です。必要なときに 'more' プロンプトを表示する方法がわかりません。

どんな提案でも大歓迎です。

4

2 に答える 2

0

GrumpyGeek、

データベース関数がテキストを1つのフィールドに結合した場合、これは、行が区切られた元の方法が引き続き保存されることを意味しますか?もしそうなら、古い行ベースのデータを集計する「line-count」と呼ばれる別の計算フィールドを追加してみませんか?

したがって、新しい結合されたHTMLフィールドと、「line-count> x」のときに「more」ボタンを表示するために使用できるこの新しいフィールドがまだありますか?

あるいは、別のオプションが機能する可能性がありますが、少し扱いに​​くいでしょう。これは、フィールドの長さがxを超えると、より多くのボタンがトリガーされることを示す式を作成することです。問題は、htmlマークアップが表示されないことです。これを多用すると、[詳細]ボタンを表示する前に必要なテキストの量が歪んでしまいます。言い換えると、マークアップ(およびタグ)を非常に頻繁に使用するフィールドでは、「詳細」ボタンが必要以上に早く強制される可能性があります。どういうわけか、「行数」の計算フィールドでマークアップを除外するか、長さの計算で同じことを行うことができない限り。

これは、MSSQLまたはCrystalReportsが正規表現を実行してマークアップを削除できる場合に可能になります。

上記のどれも機能しない場合、私が提案できる他の唯一のことは、UDFを調べることです。Crystalを使用すると、作成した外部ライブラリをロードできます。これらはあなたが書いた関数を読み取り、Crystal内の関数リストに表示します。これを行うと、HTMLを取り除き、[その他]ボタンをいつ表示するかを計算するルーチンを簡単に作成できます。

それで頑張ってください。

于 2012-05-08T10:17:35.270 に答える
0

理想的には、表示された行数を返す DB フィールドのプロパティがあります。残念ながら、そのような物件はありません。

行末文字 (キャリッジ リターン、ライン フィードなど) の数を数えてみてください。7 を超える場合は、ハイパーリンクを表示します。HTML の状況では、終了要素を数える必要があります (例:

)。RegEx UFLを使用すると、要素を簡単に識別できます。

おそらく最も簡単な方法は、DB で行数を計算し、それを別のフィールドとして返すことです。このフィールドを使用して、ハイパーリンクを表示/非表示にします。

于 2012-05-08T12:12:42.437 に答える