ClientDataSetのOnGetTextでmm/ddと表示

解決


sa  2008-11-27 20:47:24  No: 32733

いつも拝見させていただいています。
わからないことがあるので質問させてください。

ClientDataSetのOnGetTextを使用し、月日をmm/ddと表示させていのですが
例えば、3/31の場合、グリッド上に33/1と表示されてしまいます。
12/12だと、ちゃんと12/12と表示されるのですが・・・

ソースは↓
procedure Tform1.ClientDataSet1AAAAAAGetText(Sender: TField;
  var Text: String; DisplayText: Boolean);
var
  CCC: String;
begin
  inherited;
  if Sender.AsInteger <> 0 then
  begin
    CCC  := IntToStr(Sender.AsInteger);
    Text := FormatMaskText('00/00;0', CCC);
  end;
end;

年月日をyyyy/mm/ddと表示するときに
このソースとほど同じようにして出来ていたので
「できるかな?」と思ったのですが。。
(yyyy/mm/ddの場合はFormatMaskText('0000/00/00;0', CCC)としていました)

何かわかればよろしくお願いいたします。


date  2008-11-27 21:50:47  No: 32734

そのフィールドはTDateTime型ではなくてIntegerで格納されているの?
3/31は整数型で331として格納されてるわけですよね・・・
それならFormatMaskText('00/00;0', CCC)で '33/1'になるのは当たり前です。
整数の331を'3/31'としたければ、例えば・・・
Text := Format('%2d/%2d', [Sender.AsInteger div 100,Sender.AsInteger mod 100]);


sa  2008-11-28 01:05:31  No: 32735

date様

お返事ありがとうございました!
教えてもらった通りソースを書いてみたらできました☆
ありがとうございました!!


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

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






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