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;
少し訂正です。
F :=FormatrDateTime('gg""ee"年"m"月"d"日"',S);
StrToDateをHELPで確認してみてください。
'20041123'ではなく、StrToDateする前に MidStr等で文字列を
ばらして、間に/を加え、'2004/11/23'の文字列を作成すれば
日付型に変換可能です。
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;
QRDBTextはTFieldの値を表示するのじゃないでしょうか?
そのためには、TFieldの値を変更しないと変わらないのではないでしょうか?
HOtaさんの、書き込みの通りだと思います。
QRDBTextは、指定したデータセットのDataFieldの値を・・
DBと結びついたコントロールなので、今回は自分で加工した文字列
ですから意味合いが違いますよね。
この様に使ったことが無いのですが、そもそもQRDBTextにCaptionて
無いことないですか?
AYさん、HOtaさんいろいろありがとうございます。
全くの初心者なので、トンチンカンな質問だったかと思いますが、もう少し、QRDBTextについて私なりに悪戦苦闘したいと思います。
今回は、QRLabelで事足りたので、一応、解決にチェックマークを入れておきます。
QuickReportなどのレポートツールは、
一般的にデーターベースを使って表示します。
この場合は、Delphiで扱っているDataSetの中身を表示します。
編集した値を表示する場合は、計算項目を作って、それを表示
することでしょう。
ツイート | ![]() |