- PR -

DAOでの集計関数の使い方 (C#)

1
投稿者投稿内容
たぬき
会議室デビュー日: 2003/06/04
投稿数: 16
投稿日時: 2005-04-18 12:00
いまさらですが、DAOの集計関数「MAX」の使い方を
いまいち解りかねています。以下、簡易ソースですが、



public DAO.Workspace wk;
public DAO.Database db;
public DAO.Recordset rs;



private void DBOpen(string path)
{
  wk = new DAO.DBEngineClass().Workspaces[0];
  db = wk.OpenDatabase(path, false, false, "");

  string tbl_name = "SELECT MAX([過去データ]) as [MaxData]
FROM データ";

rs = db.OpenRecordset(tbl_name,
DAO.RecordsetTypeEnum.dbOpenDynaset,
DAO.RecordsetOptionEnum.dbConsistent,
DAO.LockTypeEnum.dbOptimistic);


Console.WriteLine(rs.Fields["MaxData"].Value);
}


としても、取得結果が「NULL」の状態となります。何を間違っているのでしょうか?
集計関数以外のSQL文は問題なく動作しているのですが・・・
どなたかご教授願いたく。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-04-18 13:18
NULLを含む演算はNULLになります。[過去データ]に一つでもNULLのデータがあると、MAX([過去データ])の結果もNULLになるわけですが、そういうことではない?
たぬき
会議室デビュー日: 2003/06/04
投稿数: 16
投稿日時: 2005-04-18 13:30
引用:

甕星さんの書き込み (2005-04-18 13:18) より:
NULLを含む演算はNULLになります。[過去データ]に一つでもNULLのデータがあると、MAX([過去データ])の結果もNULLになるわけですが、そういうことではない?




お返事有難う御座います。

レコードには全て値が設定されています。SQL文は問題ないと思うのですが、SQL文を発行
した後のデータの取り出し方に問題があるように感じています。
正直、解りかねています(+_+)。

今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2005-04-18 14:07
引用:

たぬきさんの書き込み (2005-04-18 12:00) より:
  string tbl_name = "SELECT MAX([過去データ]) as [MaxData]
FROM データ";


で過去データの最大値につけた列名が"[MaxData]"ですよね?

だとしたら、下のロジックでしているする列名は"MaxData"ではなく、
"[MaxData]"では?
引用:

Console.WriteLine(rs.Fields["MaxData"].Value);



#C#もDAOもよくしらないのですが、SQL的に""で囲めば[]つきの列名が
#つけられるので、もしかしたら?とおもいまして。
たぬき
会議室デビュー日: 2003/06/04
投稿数: 16
投稿日時: 2005-04-18 14:19
夏椰さん、お返事有難う御座います。


本当に本当に申し訳ありません。
結果から申しますと、単純なSQL文の発行ミスでした。
WEBに書き込んだのは簡易版のSQLでして、実際はWhere句や日付の範囲指定
を行っていました。その辺りのケアレスミスでした。SQL文は間違っていないとの
思い込みから簡易表示したわけです。
お時間を取らせて本当に申し訳ありませんでした。


>#C#もDAOもよくしらないのですが、SQL的に""で囲めば[]つきの列名が
>#つけられるので、もしかしたら?とおもいまして。

よく知らない状態での前向きなレス、本当に感謝です。
有難う御座いました(_ _)

1

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