|
分類:[.NET 全般]
少々嵌っているのでお知恵を貸して下さい。
VB.NETでプログラム開発を行っているのですが、とある画面で発行しているSQLの結果が開発環境で確認している時と 他のパソコンで実行したEXEファイルで変わってしまう現象が発生しています。
開発環境は以下の通りです。(少々古いです)
開発マシン:Windows10 開発Editior:Visual Studio2008 コンパイル時に使用される.NET Framework:3.5 使用DataBase:SQL Server2017 EXEファイル実行マシン:Windows10、Windows7
発行しているのは下記のようなSQLです。 ------------------------------------------------------- SELECT T.商品コード, SUM(M.売上数量) AS 売上数 FROM 売上テーブル T LEFT JOIN 商品マスタ M ON T.商品コード = M.商品コード AND T.請求先コード = M.請求先コード WHERE T.売上日付 BETWEEN '20200323' AND '20200329' AND T.請求先コード IN ('111', '222', '333', '444') AND M.商品区分 IN ('1', '2') GROUP BY 商品コード --------------------------------------------------------
このSQLは、開発環境でデバッグしている時や Object Browser のようなSQL実行ツールで確認している時は 意図通りの値が取れていますが、コンパイルしたEXEファイルを他のパソコンで実行すると 結果が異なってしまいます。 デバッグログを仕込んで確認した所、発行しているSQLは完全一致していますが、RecordCount自体が異なります。 値としては、売上日付が'20200329'までの売上数量と同じでしたので、WHERE句の「'20200323'から」と言う 条件が無視されている印象です。
プログラム内では、SQLを SqlClient.SqlDataAdapter で実行し、DataTable に格納して値を取得しています。 過去ログ等から、各テーブルのカラムのデータ型も意識しているのですが解消されません。
そこで、開発マシンでもEXEファイルで実行してみた所、こちらはデバッグ時と同様の正しい結果が取得できました。 よって .NET Framework や依存ファイルのバージョンを疑って調べたのですが見ている限り差があるように思えません。
どなたか原因が分かる方はいらっしゃいますでしょうか?
|