トップ回答者
AccessDBの関数利用(MAX値Get)について C#

質問
-
AccessDBを C#で利用しています
SQL文で Max()関数を利用したとき 値の取り込みでエラーが表示されます
関数利用時には、どのようにするのでしょうか 御教授下さい
string strSql = "Select Max(xxNO) From xxTable Where ..."
com = new System.Data.OleDb.OleDbCommand(strSql, cn);
dRead = com.ExecuteReader();
if (dRead.Read())
{
if (dRead.IsDBNull(0))
rtn = 0; // CategoryNo = null
else
rtn = dRead.GetByte(0); //////// ここで<キャストできない>エラーとなる
以下省略Max()がつかない読み込みの場合GetByte(0); で読み込めます
暑さでボケているのは私だけでしょうか よろしくお願いいたします
回答
-
Max関数の戻り値が整数型(私の環境でint32)になるためにキャストできずに失敗するようです。以下などのようにして、値を取得した後にbyte型に変換すればうまくいきます。
rtn = byte.Parse(dRead[0].ToString());ちなみにCByte(Max(xxNO))としてみましたが、私の環境でdRead[0]の型はint16で戻ってきたため、やはりキャストに失敗しました。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク BestOsaka 2010年8月30日 2:50
すべての返信
-
Max関数の戻り値が整数型(私の環境でint32)になるためにキャストできずに失敗するようです。以下などのようにして、値を取得した後にbyte型に変換すればうまくいきます。
rtn = byte.Parse(dRead[0].ToString());ちなみにCByte(Max(xxNO))としてみましたが、私の環境でdRead[0]の型はint16で戻ってきたため、やはりキャストに失敗しました。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク BestOsaka 2010年8月30日 2:50