いずれかで、私は、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
を供給して、ボタンのクリックイベントを見てください。私はまったく間違ったアプローチをしているように見えますか?誰かが私を修正してくださいできますか?
はあなたに
は、特定のレコードを見たいですボタンをクリックしたときに@dateFoundを指定している日付には、「データ型nvarcharを日付に変換中にエラーが発生しました」というエラーが表示されます。私はそれを取り除こうとしたが役に立たなかった。 @dateFoundに値を渡すときに、日付に変換しているとき、またはonclickイベントでストアドプロシージャのELSEステートメントで間違っているのはどこですか?それとも別の場所?あなたの助けをありがとう、それは半分の方法で働いた... – Saranga
@サランガ、あなたのWHERE句のこのセクションをチェックアウト:convert(varchar(10)、lc_orders_tb.lc_orderPlacedDate、103)= @dateFound。 VARCHARではなくDATEに変換する必要があります。 – jim31415
@peterSmithご返信ありがとうございます。私は単にlc_orders_tb.lc_orderPlacedDateを入れてみましたが、どちらもうまくいきませんでした。どうすれば日付plzに変換できますか? – Saranga