2011-07-07 4 views
0

いずれかで、私は、Visual Studio Professionalの2010エラー、日付供給されていない、のonclickイベントで問題またはストアドプロシージャまたはGridViewの中

を使用していますが、誰かが私を助けてくださいすることができ、私は思います@ dateFoundパラメータにclickイベントの値が指定されていません。

私は以下のようにストアドプロシージャから読み込まれたgridviewを持っています。

storedProcedure2は、ボタンのクリックをクリックしたとき@dateFoundが供給されます

ALTER PROCEDURE dbo.StoredProcedure2 

(
@dateFound DATE 
) 
AS 
/* SET NOCOUNT ON */ 

    IF @dateFound IS NULL 

    BEGIN 

    SELECT 
     lc_orders_tb.lc_orderID, 
     lc_orders_tb.lc_orderSubTotal, 
     lc_orders_tb.lc_orderTotal, 
     lc_orders_tb.LRNo, 
     lc_orders_tb.LRDate, 
     lc_orders_tb.lc_orderPlacedDate, 
     lc_orders_tb.LInvoiceLoc, 
     lc_orderStatus_tb.lc_orderStatusDescrip, 
     lc_orderStatus_tb.lc_delType, 
     lc_tb.lc_compName, 
     lc_tb.lc_addCity, 
     (SELECT SUM(lc_orderQuantity) 
     FROM lc_orderQuantity_tb 
     WHERE 
    lc_orders_tb.lc_orderID=lc_orderQuantity_tb.lc_OrderID) as lc_orderQuantity 
       FROM lc_orders_tb 
        INNER JOIN 
        lc_tb ON lc_orders_tb.lc_id = lc_tb.lc_id 
        INNER JOIN 
     lc_orderStatus_tb ON lc_orders_tb.lc_orderID = lc_orderStatus_tb.lc_orderID 
        ORDER BY lc_orders_tb.lc_orderPlacedDate DESC 
    END 

    ELSE 

    BEGIN 
     SELECT 
     lc_orders_tb.lc_orderID, 
     lc_orders_tb.lc_orderSubTotal, 
     lc_orders_tb.lc_orderTotal, 
     lc_orders_tb.LRNo, 
     lc_orders_tb.LRDate, 
     lc_orders_tb.lc_orderPlacedDate, 
     lc_orders_tb.LInvoiceLoc, 
     lc_orderStatus_tb.lc_orderStatusDescrip, 
     lc_orderStatus_tb.lc_delType, 
     lc_tb.lc_compName, 
     lc_tb.lc_addCity, 
     (SELECT SUM(lc_orderQuantity) 
     FROM lc_orderQuantity_tb 
     WHERE 
    lc_orders_tb.lc_orderID = lc_orderQuantity_tb.lc_OrderID) as lc_orderQuantity 
       FROM lc_orders_tb 
        INNER JOIN 
        lc_tb ON lc_orders_tb.lc_id = lc_tb.lc_id 
        INNER JOIN 
        lc_orderStatus_tb ON lc_orders_tb.lc_orderID = lc_orderStatus_tb.lc_orderID 
WHERE 
    convert(varchar(10), lc_orders_tb.lc_orderPlacedDate, 103) = @dateFound 
        ORDER BY lc_orders_tb.lc_orderPlacedDate DESC 
    END 
    RETURN 

以下のようにデフォルトでは、@dateFoundがnullの場合にGridView内のすべてのデータを表示すると仮定されて従うようである

 <asp:SqlDataSource id="Sql20" 
    ConnectionString='<%$ ConnectionStrings:connectionString %>' 
         SelectCommand="dbo.StoredProcedure2" 
         Runat="server" SelectCommandType="StoredProcedure"> 
    </asp:SqlDataSource> 

しかし、デフォルトでは、ページが読み込まれてもそれが提供されていないので、最初のifステートメントを実行する必要がありますが、@dateFoundのような別のエラーや、nvarcharの日付への変換エラーが発生します。 @dateFoundがボタンをクリックした後にテキストボックスから供給された場合、SPのELSEステートメントが実行されます。しかし、私はうまくいかないようです。誰かが私を助けてくださいすることができ@dateFound

Protected Sub CustomGV3_onClick(ByVal sender As Object, ByVal e As EventArgs) 

     Dim connectionString As String = 
    WebConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString 
     Dim con As New SqlConnection(connectionString) 
     Dim cmd As New SqlCommand("dbo.StoredProcedure2", con) 
     cmd.CommandType = CommandType.StoredProcedure 

     cmd.Parameters.AddWithValue 
    ("@dateFound", Format(txtBoxDateFrom.Text, "dd/MM/yyyy")) 

     Using con 
      con.Open() 
      cmd.ExecuteReader() 
      con.Close() 
     End Using 
     GridView3.DataBind() 
    End Sub 

を供給して、ボタンのクリックイベントを見てください。私はまったく間違ったアプローチをしているように見えますか?誰かが私を修正してくださいできますか?

はあなたに

答えて

1

に感謝.. plzはあなたの種類の助けを待っている@dateFoundパラメータのデフォルト値を使用するように、ストアドプロシージャを変更してみてください:

私は最終的に他のフォーラムからの回答を得ました
ALTER PROCEDURE dbo.StoredProcedure2 
(
    @dateFound DATE = NULL 
) 
AS 
+0

は、特定のレコードを見たいですボタンをクリックしたときに@dateFoundを指定している日付には、「データ型nvarcharを日付に変換中にエラーが発生しました」というエラーが表示されます。私はそれを取り除こうとしたが役に立たなかった。 @dateFoundに値を渡すときに、日付に変換しているとき、またはonclickイベントでストアドプロシージャのELSEステートメントで間違っているのはどこですか?それとも別の場所?あなたの助けをありがとう、それは半分の方法で働いた... – Saranga

+0

@サランガ、あなたのWHERE句のこのセクションをチェックアウト:convert(varchar(10)、lc_orders_tb.lc_orderPlacedDate、103)= @dateFound。 VARCHARではなくDATEに変換する必要があります。 – jim31415

+0

@peterSmithご返信ありがとうございます。私は単にlc_orders_tb.lc_orderPlacedDateを入れてみましたが、どちらもうまくいきませんでした。どうすれば日付plzに変換できますか? – Saranga

0

、それは単にagaiデータベースであることを行ってすることはありませんよう、上記の日付がデフォルトとして設定されている

(
@dateFound DATE = '01/01/1900' 
) 

SPに次のよう変更して働いていました私はSPのステートメントでチェックします。 aspxページでは以下のようになります。

<SelectParameters> 
     <asp:ControlParameter ControlID="txtBoxDateFrom" 
     Name="dateFound" PropertyName="Text" 
     DbType="Date" DefaultValue="01/01/1900" /> 

私が欲しい時に、ページのロード時に、今では最初に動作します、ありがとうございましたが、@peterSmith、ここで私を助けようとしたすべての貢献に感謝します。..

関連する問題