お世話になっています。Delphi6で開発をしています。ADOを使ったParadoxテーブル接続に関する質問なんですが...。
ADOを使ってParadoxテーブルを接続するとParadoxテーブルに時間タイプフィールドがおかしくなってしまいます。
例...20:12:01 → 1899/12/31 20:12:01
これはDelphi6のバグでしょうか?
もし回避方法が解りましたら教えて下さい。
ん?正しいと思いますよ。
1899/12/31 は 1899/12/30 の typo だとは思いますが。
[TDatetime]
http://docwiki.embarcadero.com/Libraries/ja/System.TDateTime
例えば、
var
dTime: TTime;
begin
dTime := StrToTime('20:12:01');
ShowMessage(FormatDateTime('YYYY/MM/DD hh:nn:ss', dTime));
end;
これは "1899/12/30 20:12:01" が表示されます。
表示上の問題でしょうけれど "何を使って何に表示" しようとされてるのですか?
例えば...
BDEのTTABLEを使ってParadoxの時間フィールドをグリッドで表示すると'20:12:01'と表示され適切に編集されますが...
ADOを使ってParadoxの時間フィールドをグリッドで表示すると'1899/12/30 20:12:01'と表示され編集出来なくなってしまいます。
ちなみにADOはDSNを使っています。
ADO って日付型や時刻型は日付時刻型で扱われた気がします (ADO.NET とかも)。
TADOTable を使われているのであれば、フィールドの DisplayFormat で時刻型を指定できませんか?
[Interbase、DBgridの数値に位取り表示をするには]
https://forums.embarcadero.com/thread.jspa?threadID=84613&tstart=0
[568_ADO による Paradox データベース接続 (Mr.XRAY)]
http://mrxray.on.coocan.jp/Delphi/plSamples/568_ADO_Paradox.htm
> 編集出来なくなってしまいます。
ADO での Paradox ODBC 接続は場合によっては読み取り専用になります。
[[INFO] BDE を使用しない Paradox と dBase の ISAM ドライバ]
http://support.microsoft.com/kb/263561/ja
この件に該当していませんか?他の項目は編集できるのでしょうか。
TFloatField(ADOQuery1.FieldByName('time')).EditlayFormat :='tt';
でやってみましたがダメでした。
他の項目は編集できます..。
> TFloatField
時刻フィールドなのですから、TTimeField や TDateTimeField 等を使ってみてください。
http://docwiki.embarcadero.com/Libraries/ja/Data.DB.TTimeField
http://docwiki.embarcadero.com/Libraries/XE2/ja/Data.DB.TDateTimeField
>TFloatField(ADOQuery1.FieldByName('time')).EditlayFormat :='tt';
>でやってみましたがダメでした。
「ダメ」というより EditlayFormat で未定義の「エラー」となりますね.
で,最初の表示の問題はどうなったのでしょうか ?
なんか,質問の内容が変わったような気がしますが.気のせい ?
参考です.
http://mrxray.on.coocan.jp/Others/007.htm
出来ればフォーマットのサンプルを教えて下さい。
> 出来ればフォーマットのサンプルを教えて下さい。
ん?これは "編集時の" という意味でしょうか?
編集時には EditMask を設定しますが、
http://docwiki.embarcadero.com/Libraries/ja/Data.DB.TField.EditMask
>EditMask で必要な形式の詳細は,TEditMask 型を参照してください。
と書いてあるので、TEditMask を参照します。
http://docwiki.embarcadero.com/Libraries/ja/System.MaskUtils.TEditMask
ここに書式が書いてあります。
面倒ならフォームに MaskEdit を貼り付けて
オブジェクトインスペクタで EditMask プロパティをダブルクリックしてみて下さい。
TEditMask 用のプロパティエディタが開きます。
# 質問の意味はこれで合っていますか?もし違うのであれば、
# 質問の意味を "誰が読んでも理解できるもの" に書き直して
# 再投稿してください。
># 質問の意味はこれで合っていますか?もし違うのであれば、
># 質問の意味を "誰が読んでも理解できるもの" に書き直して
># 再投稿してください。
なんか幼稚園児扱いのようにも (笑)
「○○ちゃん,それでどうなったの ?」
で,私が訊いたことはどうなったのでしょう.
どんな動作仕様が望みなのか理解できませんが,以下が参考になれば.
[項目エディタを使用して,DBGrid 等への表示形式を変更]
http://ht-deko.minim.ne.jp/delphiforum/?vasthtmlaction=viewtopic&t=1103.0
ツイート | ![]() |