1

dateTimePicker2 つのコントロール (dtpStartdtpEnd)、ボタン、および結果を表示するフォームがありdatagridviewます。はコントロールdatagridviewにバインドされていbindingSourceます。

datagridview で必要なスコープを返すためにdate、コントロールからストアド プロシージャに 2 つのパラメーターを渡したいと考えています。dateTimePicker

私のストアドプロシージャは次のようになります。

CREATE PROC [dbo].[ProcTest](@StartDate date, @EndDate date)
AS
SELECT * FROM Test WHERE ModifiedDate BETWEEN @StartDate AND @EndDate

私のC#コードは次のとおりです。

    private void button1_Click(object sender, EventArgs e)
    {
        dc = new NorthwindDataContext();

        var Qry = dc.ProcTest(dtpStart.Value, dtpEnd.Value);
        bindingSource1.DataSource = Qry;
    }

上記のコードを実行すると、データグリッドに何も表示されません。ストアドプロシージャで型を使用し、値が型であるため、これは変換の問題であると想定していdtpEnd.valueます。13/08/2012 02:15:29datedatetimepickerdateTime

これを解決する方法を教えてください。

4

4 に答える 4

2

クエリの結果を取得する必要があります。たとえば、次のようになります。

bindingSource1.DataSource = Qry.ToList();

問題は Date パラメーターにあるとはまったく思いません。それは次のようにサポートされています。

http://msdn.microsoft.com/en-us/library/bb386947.aspx

于 2012-08-13T04:10:50.057 に答える
0

これの代わりに

var Qry = dc.ProcTest(dtpStart.Value, dtpEnd.Value);

これを使用して、問題が解決するかどうかを確認してください。

var Qry = dc.ProcTest(dtpStart.ToString("dd-MMM-yyyy"), dtpEnd.ToString("dd-MMM-yyyy"));
于 2012-08-13T05:23:56.497 に答える
0

Dave R. によって提供されたリンクのおかげで: http://msdn.microsoft.com/en-us/library/bb386947.aspx私のコードは変更しなくても機能することがわかりました。そのため、最初に SP からパラメーターを削除してエラーを検索した後、 SP の結果を指す新しいデータソース オブジェクトを作成し、設計時にそれをdatagridviewにバインドする必要があることがわかりました。これで、データグリッドはデータとパラメーターが機能していることを示しています。

申し訳ありませんが、質問を投稿する前に確認する必要がありましたが、日付パラメーターの使用法について非常に混乱していました。

だから私は最初の質問にあるようにコードを保持します:

private void button1_Click(object sender, EventArgs e)
{
    dc = new NorthwindDataContext();

    var Qry = dc.ProcTest(dtpStart.Value, dtpEnd.Value);
    bindingSource1.DataSource = Qry;
}
于 2012-08-13T14:17:35.510 に答える
-1

日時ピッカーの値ではなく、日付を送信する必要があると思います。

基本的に、次の行を変更します。

var Qry = dc.ProcTest(dtpStart.Value, dtpEnd.Value);

読むには:

var Qry = dc.ProcTest(dtpStart.SelectedDate.Value, dtpEnd.SelectedDate.Value);

それでもうまくいかない場合は、次のことを試します。

var Qry = dc.ProcTest(dtpStart.SelectedDate.Value.Date, dtpEnd.SelectedDate.Value.Date);
于 2012-08-13T03:05:32.277 に答える