ADOのParadoxテーブルの時間タイプフィールドがおかしくなってしまいます。


太一  2013-04-22 19:06:24  No: 44387

お世話になっています。Delphi6で開発をしています。ADOを使ったParadoxテーブル接続に関する質問なんですが...。

ADOを使ってParadoxテーブルを接続するとParadoxテーブルに時間タイプフィールドがおかしくなってしまいます。

例...20:12:01 → 1899/12/31 20:12:01

これはDelphi6のバグでしょうか?

もし回避方法が解りましたら教えて下さい。


DEKO  2013-04-23 11:35:18  No: 44388

ん?正しいと思いますよ。
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" が表示されます。

表示上の問題でしょうけれど "何を使って何に表示" しようとされてるのですか?


太一  2013-04-23 16:53:44  No: 44389

例えば...

BDEのTTABLEを使ってParadoxの時間フィールドをグリッドで表示すると'20:12:01'と表示され適切に編集されますが...

ADOを使ってParadoxの時間フィールドをグリッドで表示すると'1899/12/30 20:12:01'と表示され編集出来なくなってしまいます。

ちなみにADOはDSNを使っています。


DEKO  2013-04-23 21:47:04  No: 44390

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

この件に該当していませんか?他の項目は編集できるのでしょうか。


太一  2013-04-24 00:57:25  No: 44391

TFloatField(ADOQuery1.FieldByName('time')).EditlayFormat :='tt';
でやってみましたがダメでした。

他の項目は編集できます..。


DEKO  2013-04-24 02:53:14  No: 44392

> TFloatField
時刻フィールドなのですから、TTimeField や TDateTimeField 等を使ってみてください。

http://docwiki.embarcadero.com/Libraries/ja/Data.DB.TTimeField
http://docwiki.embarcadero.com/Libraries/XE2/ja/Data.DB.TDateTimeField


Mr.XRAY  2013-04-24 04:33:23  No: 44393

>TFloatField(ADOQuery1.FieldByName('time')).EditlayFormat :='tt';
>でやってみましたがダメでした。

「ダメ」というより EditlayFormat で未定義の「エラー」となりますね.
で,最初の表示の問題はどうなったのでしょうか ?
なんか,質問の内容が変わったような気がしますが.気のせい ?

参考です.
http://mrxray.on.coocan.jp/Others/007.htm


太一  2013-04-28 01:10:25  No: 44394

出来ればフォーマットのサンプルを教えて下さい。


DEKO  2013-04-28 02:52:42  No: 44395

> 出来ればフォーマットのサンプルを教えて下さい。
ん?これは "編集時の" という意味でしょうか?
編集時には 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 用のプロパティエディタが開きます。

# 質問の意味はこれで合っていますか?もし違うのであれば、
# 質問の意味を "誰が読んでも理解できるもの" に書き直して
# 再投稿してください。


Mr.XRAY  URL  2013-04-28 03:35:03  No: 44396

># 質問の意味はこれで合っていますか?もし違うのであれば、
># 質問の意味を "誰が読んでも理解できるもの" に書き直して
># 再投稿してください。 

なんか幼稚園児扱いのようにも (笑)
「○○ちゃん,それでどうなったの ?」

で,私が訊いたことはどうなったのでしょう.
どんな動作仕様が望みなのか理解できませんが,以下が参考になれば.

[項目エディタを使用して,DBGrid 等への表示形式を変更]
http://ht-deko.minim.ne.jp/delphiforum/?vasthtmlaction=viewtopic&t=1103.0


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

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






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