- PR -

DataColumn.Expressionにて日数差を算出したい

投稿者投稿内容
T.H
会議室デビュー日: 2004/08/09
投稿数: 18
お住まい・勤務地: 東京都
投稿日時: 2004-08-09 18:57
初めての書き込みです。お世話になります。

DataTableに2つのColumn(Datetime型:仮にA,Bとする)があります。
この2つの日数差を持つ3つめのColumn(Cとする)を追加したいと考えております。
このとき、DataColumn.Expressionに式を設定すれば良いと思うのですが、
どのような式を設定すればよいでしょうか?
ヘルプも見ましたが、使える関数も限られているようでうまくいきません。
何かご存知あればご教授お願いします。

例:
A=2004/08/09
B=2004/09/30
の場合、Cには"52"が入って欲しい
T.H
会議室デビュー日: 2004/08/09
投稿数: 18
お住まい・勤務地: 東京都
投稿日時: 2004-08-09 19:00
書きそびれました。。。

当方、C#にてWindowsApplicationの開発を行っております。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2004-08-10 09:35
データをDBから抜いているのであれば、DBサイドで計算した結果を取得するのが手っ取り早そう。

そうでない場合、DataSourceをどのような形で保持しているか分からないので、なんともいえません。

プログラム内で計算するなら、
DataTime#Subtract(DateTime value)
DateTime#Subtract(TimeSpan value)
こんなメソッド使い倒すのかな?
T.H
会議室デビュー日: 2004/08/09
投稿数: 18
お住まい・勤務地: 東京都
投稿日時: 2004-08-10 10:12
元はDBから取得しています。
しかし、その値をDBGridを使用して表示させており、
ユーザー入力により動的に日数差を表示させたいのです。

DataSourceはDataSetで保持しています。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-08-10 13:09
引用:

GYANさんの書き込み (2004-08-10 10:12) より:
元はDBから取得しています。
しかし、その値をDBGridを使用して表示させており、
ユーザー入力により動的に日数差を表示させたいのです。

DataSourceはDataSetで保持しています。


 取得するときに日数差という列を増やす、というのは?
T.H
会議室デビュー日: 2004/08/09
投稿数: 18
お住まい・勤務地: 東京都
投稿日時: 2004-08-10 13:25
取得時に列を増やすというのもやってみましたが、
DataGridへの表示後に日付カラムを変更しても
日数差カラムの値は変わりませんでした。

で、今考えているのはDataTable.ColumnChanged
イベントを拾って、そこで計算→日数差カラムに
設定と言う風にしようと思います。

やっぱりDataColumn.Expression では複雑な式は
設定出来ないですかね。。。

色々とありがとうございました。
T.H
会議室デビュー日: 2004/08/09
投稿数: 18
お住まい・勤務地: 東京都
投稿日時: 2004-08-10 13:25
取得時に列を増やすというのもやってみましたが、
DataGridに表示後に日付カラムを変更しても、
日数差カラムの値は変わりませんでした。

で、今考えているのはDataTable.ColumnChanged
イベントを拾って、そこで計算→日数差カラムに
設定と言う風にしようと思います。

やっぱりDataColumn.Expression では複雑な式は
設定出来ないですかね。。。

色々とありがとうございました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-08-10 13:50
引用:

GYANさんの書き込み (2004-08-10 13:25) より:

やっぱりDataColumn.Expression では複雑な式は
設定出来ないですかね。。。


 単純な引き算ではダメでしたか?(エラーでしたか?それとも思ったのと違う値でしたか?)
 該当カラムのデータタイプが正しく(TimeSpanかな?)設定されていれば、イケるように思うのですが。。。

スキルアップ/キャリアアップ(JOB@IT)