none
更新資料庫時產生錯誤 RRS feed

  • 問題

  • 各位前輩, 我用底下的code想要去 update database record,

     

        Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs)


            Dim ads As New System.Web.UI.WebControls.AccessDataSource
            Dim approve, approve_time As String
           
            ads.DataFile = "~/App_Data/color_match_live.mdb"
            ads.UpdateCommand = "Update [color_match] Set [approve_time] = ? Where [form_serial]=@form_serial"
            approve = CType(CType(GridView1.Rows(e.RowIndex), GridViewRow).FindControl("DropDownList1"), DropDownList).SelectedValue
            Response.Write(approve)
            approve_time = ads.UpdateParameters.Add("approve_time", Now)

            If approve = "Yes" Then
                ads.Update()
            End If


        End Sub

     

    但是產生以下錯誤!

     

    無值提供給一或多個必要參數。

    描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。

    例外詳細資訊: System.Data.OleDb.OleDbException: 無值提供給一或多個必要參數。

    原始程式錯誤:

    行 52: 
    行 53:         If approve = "Yes" Then
    行 54:             ads.Update()
    行 55:         End If
    行 56:     End Sub

     

    請問如是什問題?

    2008年6月2日 上午 01:51

解答

  • Code Snippet

    Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs)


       Dim ads As New System.Web.UI.WebControls.AccessDataSource
       Dim approve, approve_time As String
            
       ads.DataFile = "~/App_Data/color_match_live.mdb"
       ads.UpdateCommand = "Update [color_match] Set [approve_time] = ? Where [form_serial] = ?"
       approve = CType(...).SelectedValue
       Response.Write(approve)
       approve_time = ads.UpdateParameters.Add("approve_time", Now)

       

       ads.UpdateParameters.Add("form_serial", [your_value])

      

       If approve = "Yes" Then
          ads.Update()
       End If

     

     

     

    2008年6月2日 上午 03:20
    版主

所有回覆

  • Hi 您是否忘了給form_serial值。
    2008年6月2日 上午 02:00
  • HI,

     

    您欲執行SQL敘述需要一個名稱為@form_serial的參數, 但是您的程式並沒有提供此參數的內容, 所以發生錯誤

     

    tihs

    2008年6月2日 上午 02:01
  • 你的 @form_serial 有給值嗎?我看到的好像是沒有哩。

     

    2008年6月2日 上午 02:01
    版主
  • 小朱前輩

     

    我加了

     

    form_serial = Ctype(GridView1.Rows(e.RowIndex).Cells(2).Controls(0), TextBox).Text

    ads.Updateparameters.add("form_serial", form_serial)

     

    ads.Update()

     

    結果還是一樣!

     

    2008年6月2日 上午 03:16
  • Code Snippet

    Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs)


       Dim ads As New System.Web.UI.WebControls.AccessDataSource
       Dim approve, approve_time As String
            
       ads.DataFile = "~/App_Data/color_match_live.mdb"
       ads.UpdateCommand = "Update [color_match] Set [approve_time] = ? Where [form_serial] = ?"
       approve = CType(...).SelectedValue
       Response.Write(approve)
       approve_time = ads.UpdateParameters.Add("approve_time", Now)

       

       ads.UpdateParameters.Add("form_serial", [your_value])

      

       If approve = "Yes" Then
          ads.Update()
       End If

     

     

     

    2008年6月2日 上午 03:20
    版主
  • 感謝小朱前輩的指導,資料已經更新成功!

     

    2008年6月2日 上午 03:33