../../image/benilogo.gifDelphi7 について


Windows 環境 から PostgreSQL の Interval型 を Delphi 7 (MEMO)型
  として扱う方法について。

 PostgreSQL で Interval 型 で定義されているものや Varchar 型のデーターを Delphi の DBEdit で見ると
( MEMO ) としか表示されない。

こんな感じで ( MEMO ) 型として見ているようです。


このフィールドはどうなっているのか? ODBC 経由で BDE にはどんなふうに見えているのか?

  • ODBC 経由 BDEでは LONGVARCHAR と見ているようです。

実験
Query1 : TQuery のa5

Query1a5 : TMemoField

OnGetText と OnSetText にイベントハンドラを書く。
OnGetText と OnSetText
{*****************************************
**  文字型として表示する。
**
**
*******************************************
}
procedure TForm1.Query1a5GetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
  text := Sender.AsString;
end;
{*****************************************
**  Valiant で返す。
**
**
*****************************************
}
procedure TForm1.Query1a5SetText(Sender: TField; const Text: String);
begin
  Sender.AsVariant := text;
end;



検証
実行時


   実行時 a5 Interval はちゃんと 文字として見える。

   更新も可能です。
   このとき、 60:01:03 とかを入力すると 
   
   「2 days 12:01:03」 などと表示する。

   そもそも ODBC BDE Delphi では interval なる型をもって
   いないので、多少 問題はありそうです。
   しかし、期間、間隔を保存する意味では面白い。

   リードタイムなんかを保持しておくにはよさそうです。
   ただ、Delphi からどういう基準で変換させるのかは、
   もう少し考える必要がありそうです。
    


PostrgreSQLでのデーター

beniya=# select * from a_test6 ORDER BY a1;
     a1     |      a2       |           a3           |           a4           |       a5
------------+---------------+------------------------+------------------------+-----------------
 123        | gLOG3         | 2005-01-31 14:39:05+09 | 2005-01-24 15:00:48+09 | 2 days 12:01:03
 2200       | shuo          | 2005-01-31 14:39:34+09 | 2005-01-31 14:25:54+09 | 4 days 00:04:18
 aaa        | こいつ1       | 2005-01-31 14:25:13+09 | 2005-01-24 00:01:01+09 | 00:01:02
 aaaaa      | jokeです。    | 2005-01-26 14:31:20+09 | 2005-01-24 14:24:17+09 | 00:01:02
 aaaab      | andy4         | 2005-01-31 14:24:26+09 | 2005-01-24 14:24:45+09 | 00:01:09
 bcom       | dasy8         | 2005-01-31 12:03:20+09 | 2005-01-24 18:24:00+09 | 00:01:03
 ddkey      | fsdffffff     | 2005-01-31 12:03:51+09 | 2005-10-12 00:00:00+09 | 00:10:02
 dog        | 犬s           | 2005-01-31 14:05:51+09 | 2005-01-31 12:17:40+09 | 00:05:30
 eee        | esa           | 2005-01-26 13:03:13+09 | 2005-01-26 13:01:25+09 | 00:01:02
(9 rows)






















目次に戻る

2005/01/28 start ********* Last Update 2006/06/03 15:34 JST

(C) Y.Kondou,2005,2006 All Rights, Reserved.
その他、お気づきの点がありましたら連絡先はこちらから