1

パラメータをテーブルの主キーと照合することにより、ストアドプロシージャをトリガーしてレコードを削除する以下のコードがあります。すべてが適切に割り当てられている debug ang を使用してコードを実行しましたが、指定された引数が多すぎるというエラーが表示され続けます。値が適切に割り当てられているため、ストアドプロシージャに関係があると思います。

    Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
    Dim CurrentCommand As String = e.CommandName
    Dim CurrentRow As Integer = Int32.Parse(e.CommandArgument.ToString())
    Dim ID As String = GridView1.DataKeys(CurrentRow).Value

    sqlds.DeleteParameters.Add("KeyOpType", ID)
    sqlds.Delete()


End Sub

SQL Server 2008 のストアド プロシージャ

ALTER PROCEDURE [dbo].[GetGenInfo_DeleteMines]
(@KeyOpType int)
AS
Delete FROM GenInfo_OpType
Where KeyOpType = @KeyOpType
4

2 に答える 2

0

削除コマンドをどこに設定していますか? それが正しい手順を呼び出していることを確実に知っていますか? これがあなたがやろうとしていることだと思います。これをチェックして:

GridView と CRUD を使用した SQLDataSource

于 2013-05-10T21:02:22.890 に答える
0

これで問題が解決するかどうかはわかりません....しかし

ストアド プロシージャで BEGIN が欠落しているようです。私はこれに慣れていませんが、それが必要だと思います。

ALTER PROCEDURE [dbo].[GetGenInfo_DeleteMines]
(@KeyOpType int)
AS
BEGIN <-----------------------------------MISSING THIS
Delete FROM GenInfo_OpType
Where KeyOpType = @KeyOpType

さらに、vb コードで SP を呼び出している場所がわかりません。

編集:さらに例を挙げると....

gv 行コマンドの背後にある私のコードは次のようになります... (gv のボタン/リンクから来る場合は、gv のコントロールに CommandName="SomeCommandName" を追加する必要があります)

    Protected Sub gvName_RowCommand(sender As Object, e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvName.RowCommand

        Dim tGrid As GridView = DirectCast(sender, GridView)
        Dim tIndex As Integer = Convert.ToInt32(e.CommandArgument)
        Dim row As GridViewRow = Nothing

Select Case e.CommandName
            Case "SomeCommandName"
                CallToDelete(tGrid.DataKeys(tIndex).Value)
        End Select

    End Sub
于 2013-05-10T21:02:56.403 に答える