DataGridのデータソースとして使用するDataTableを入力するためにSqlDataAdapterを使用しようとしています。少なくともSSMSEで手動で実行すると、クエリは正常です。塗りつぶし操作を実行すると、テーブルには右の列が取得されますが、行は取得されません。これの最も不満足な部分は、コードが別のページ上で(別のクエリで)同一であることです。私は、クエリを投稿することはできませんが、私の初期化コードは次のようになります。SqlDataAdapter.Fill(DataTable)No行を返す
SqlCommand areaDAC = new SqlCommand (areaQuery, connection);
areaDAC.Parameters.Add (new SqlParameter ("@param", System.Data.SqlDbType.NVarChar, 50));
m_areaDataAdapter = new SqlDataAdapter (areaDAC);
そして、それを使用する:
m_areaDataAdapter.SelectCommand.Parameters["@param"].Value = "Filter Val";
DataTable table = new DataTable();
m_areaDataAdapter.Fill (table);
この時点で、テーブルが列なし正しい行数をしています。私はパラメータが正しく追加されていることを知っている、私はデータが特定のクエリのために存在することを知っている。
更新(コメントにニックによって提供されるように):あなたが試みることができる
SELECT * FROM
(SELECT
ROW_NUMBER() OVER(ORDER BY DateAndTime DESC) AS rowNum,
areaName, stationName, lineName, DateAndTime,
Element, Description
FROM
sdrReportArea, sdrReportStation, sdrReportTLine,
SDRSequenceEvents, SDRSequenceStates
WHERE
sdrReportArea.areaID = sdrReportStation.stationID
AND sdrReportStation.stationID = sdrReportTLine.stationID
AND sdrReportTLine.lineID = SDRSequenceEvents.LineID
AND SDRSequenceEvents.StateID = SDRSequenceStates.StateID
AND DateAndTime >= @startDate AND DateAndTime <= @endDate
AND areaName = @area) AS TempTbl
WHERE
rowNum BETWEEN @startRow AND @endRow;
SQLマネージャで直接SQLクエリをテストしましたか?あなたは例外をキャッチして手がかりを調べていますか? –
接続文字列も確認することをお勧めします。動作しているクエリが、探しているデータを持たない別のバージョンのデータベースに移動している可能性はありますか? –
クエリは手動で正常に動作します。接続文字列はOKで、手動でテストしたサーバーと一致します。私はC#コードを実行するときに例外はありません。 rowNum列の目的は、一度に50行しかデータをウィンドウに表示しないことです。これも手動でうまく動作します。 – Nik