おはようございます!Crystal Reports XIのテキストフィールドでの文字列の書式設定
誰かが私に助けてくれることを願っていますが、おそらく簡単な質問ですが、私は好きなように働くことはできません。私は現在、 "catch-all"テキストフィールドを持つレポートを扱っています。このフィールドでは、ユーザーは必要なものを入力でき、場合によっては情報を列形式で入力します(例1.1)。このフィールドは、このフィールドに「行」を作成するために使用されるキャリッジリターンを許可します。問題は、情報が入力されたときに列間のスペースを数えることなく(たとえば、1.2)、このフィールドの「列」がレポートに並んでいてほしいということです。問題は、この種の情報が入力されても、プロトコルまたはフォーマットのガイドラインが設定されていないことです。複数の「字幕」、行、字幕で区切られた行などがあります。各行の終わりにある改行(Chr(10))(または新しい行の始まり)だけが依存することができます一貫して
私は現在、個々の行を区切る必要に応じて、それぞれの書式を設定し、そのように一緒に戻ってそれを置くしようとしています:
Dim output As String
Dim sections as String
Dim returnCount as Int
Dim leftText as String
Dim rightText as String
Dim sectionTogether as String
Dim totalText as String
Dim textLength as Int
output = {table.textfield}
sections = ExtractString(output, Chr(10), Chr(10))
If Instr(sections," ") > 0 Then
leftText = Left(sections, Instr(sections, " "))
textLength = Length(Left(sections, Instr(sections, " "))
rightText = Right(sections, Instr(sections, " "))
Replace(sections," "," ")
sectionTogether = rightText + (Space(20) - (textLength - 3)) + leftText
totalText = totalText + sectionTogether
formula = totalText
else
formula = output
これは私が何をしようとしているの要旨です。 2つのノート: 1)私はすべてのセクションをフォーマットするためにいくつかの種類のループが不足していることを知っているが、私は結晶でそれを設定する方法を知っていない 2)私はVBプログラミング経験を持っていますが、限られたツールを使用しているので、私はひっかかっていると感じています。私はVisual Studioで使用する方法とツールを見つけるのに苦労しています 3)私はまだこれを設定する方法を学んでいるので、デバッガ。
私は誰かが私を助けてくれることを願っています。私は1週間以上研究していて、壁に頭を打っているように感じています。
ありがとうございます。
The output examples
ex. 1.1
"Your current charges are:
Jan 12.89
Feb 117.44
Mar 15.02
Apr 4.17"
ex. 1.2
"Your current charges are:
Jan 12.89
Feb 117.44
Mar 15.02
Apr 4.17"
ありがとうございました。それは真のタイプのフォントであり、私はあなたのアプローチが大好きですが、私はまだスペーシングエラーが発生しています。私はあなたのコードに小さな変更を加えなければならなかったので、複数のスペースを持たない行でこれらの操作を実行しませんでした。 '(行:= split(wall [i]、 ""); j:= 1の場合、 (行:= split(wall [i]、 ""); の場合はi = 1からubound (elem:= trim(行[j]); output:= output + space(20-len(elem))+ elem); output:= output + chr(10)); ) Else 出力:= {PBP_DPM_DETAIL_VW。テキスト}; 出力 ' –
つまり、コードはうまくいくように見えますが、コードを変更せずに実行すると、奇妙な間隔があります。 idk何が起こっている。 –
@EdwardLane出力をビルドする前に 'if not(elem =" ")then'を追加しました。これは、あなたの例のように列の輪郭を描くためにスペースの束を使用する状況を処理します。 "字幕"を含む行をスキップする場合は、その行に2つのスペースを含む文字列が表示されているかどうかを確認するだけです。 – Ryan