QRDBTextに和暦表示するには?

解決


サンプー  2004-11-23 16:22:23  No: 11875

Del6Pro,QRVer.3,XpPronoの環境です。文字列で格納してあるデータ(例えば、2000年11月23日だと『20041123』)をQRDBTextに書き出そうとしています。以下のイベントハンドラーを記載し実行すると、
''20041123' is not a valid date' のエラーメッセージが出ます。何のことか分かりません。どなたか対処法を教えて下さい。

procedure TRepDM.QuickRepBeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
   var S : TDateTime;
       F : String;
begin
  S := StrToDate(DMSyakenManager.DMSyaken.SyakenMainQueryNextSyaken.Text);
  F :=FormatDateTime('yy""ee"年"m"月"d"日"',S);
  QRDBText6.Caption := F
end;


サンプー  2004-11-23 16:25:18  No: 11876

少し訂正です。
F :=FormatrDateTime('gg""ee"年"m"月"d"日"',S);


AY  2004-11-23 18:07:13  No: 11877

StrToDateをHELPで確認してみてください。
'20041123'ではなく、StrToDateする前に  MidStr等で文字列を
ばらして、間に/を加え、'2004/11/23'の文字列を作成すれば
日付型に変換可能です。


サンプー  2004-11-24 00:17:38  No: 11878

AYさん早速のレスありがとうございました。
QRDBTextに直接の表示は出来ませんでしたが、QRLabelを使うことによって1クッションおいて期待通りの結果が得られました。しかし、QRDBTextに表示されないのは、まだ理解できません。よろしかったら、教えてください。QRLabelを使っての期待通りのソースコードは、以下の通りです。

procedure TRepDM.DetailBand1BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
  var TN : TDateTime;
       F,C,S : String;
begin
  C := DMSyakenManager.DMSyaken.SyakenMainQueryNextSyaken.Text;
  S := MidStr(C,1,4) + '/' + MidStr(C,5,2) + '/' + MidStr(C,7,2);
  TN := StrToDateTime(S);
  F :=FormatDateTime('gg""ee"年"m"月"d"日"',TN);
  QRLabel9.Caption := F

end;


HOta  2004-11-24 00:22:58  No: 11879

QRDBTextはTFieldの値を表示するのじゃないでしょうか?
そのためには、TFieldの値を変更しないと変わらないのではないでしょうか?


AY  2004-11-24 02:25:21  No: 11880

HOtaさんの、書き込みの通りだと思います。
QRDBTextは、指定したデータセットのDataFieldの値を・・
DBと結びついたコントロールなので、今回は自分で加工した文字列
ですから意味合いが違いますよね。
この様に使ったことが無いのですが、そもそもQRDBTextにCaptionて
無いことないですか?


サンプー  2004-11-24 09:33:46  No: 11881

AYさん、HOtaさんいろいろありがとうございます。
全くの初心者なので、トンチンカンな質問だったかと思いますが、もう少し、QRDBTextについて私なりに悪戦苦闘したいと思います。
今回は、QRLabelで事足りたので、一応、解決にチェックマークを入れておきます。


HOta  2004-11-24 22:59:19  No: 11882

QuickReportなどのレポートツールは、
一般的にデーターベースを使って表示します。
この場合は、Delphiで扱っているDataSetの中身を表示します。
編集した値を表示する場合は、計算項目を作って、それを表示
することでしょう。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加