0

Microsoft Access データベースを使用しています。コードを実行しようとすると、「行/列のデータがありません」と表示されます。Microsoft Access で SQL コードを実行したところ、うまくいきました。

OleDbCommand cmd1 = new OleDbCommand("SELECT SUM (adet) AS gToplam from stok_isl WHERE stok_id = @veri and tur = 'GİRİŞ'", conn);
cmd1.Parameters.AddWithValue("@veri", combo);
OleDbDataReader dr1 = cmd1.ExecuteReader();


OleDbCommand cmd2 = new OleDbCommand("SELECT SUM (adet) AS cToplam from stok_isl WHERE stok_id = @veri and  tur = 'ÇIKIŞ'", conn);
cmd2.Parameters.AddWithValue("@veri", combo);
OleDbDataReader dr2 = cmd2.ExecuteReader();


Sonuc = Convert.ToDouble(dr1["gToplam"]) - Convert.ToDouble(dr2["cToplam"]);

MessageBox.Show(Sonuc.ToString());
4

1 に答える 1

1

取得する数値は 1 つだけなので、ExecuteScalarの方が適しているようです。

...
double gToplam = (double)cmd1.ExecuteScalar();
...
double cToplam = (double)cmd2.ExecuteScalar();

Sonuc = gToplam - cToplam;

ExecuteReaderただし、もちろん問題なく使用できます。問題は、結果セットの最初の行を読み取るメソッドを呼び出さなかったことです(使用例については、このページReadを参照してください)。

...
OleDbDataReader dr1 = cmd1.ExecuteReader();
dr1.Read();
...
OleDbDataReader dr2 = cmd2.ExecuteReader();
dr2.Read();

クエリが空の結果を返す場合、これらのコード サンプルは両方ともケースをチェックしないことに注意してください。

于 2013-07-25T07:52:45.210 に答える