none
vb 2008 Updatecommand 的小問題 RRS feed

  • 問題

  • 我用 Updata 指令 發現到一個 奇怪的小問題
    就是 在做 Updata 動作時候 如果 第一行 的 資料要作更改時
    會無法 更新 但是如果 第一行資料 沒改 其餘行的資料有改 卻可以更新?



    程式碼如下

    以程式碼的範例來說 就是 欄位名稱為 "名字" 那邊有小問題, 也就是 如果我想改名字 ..卻沒法作一個更新動作 , 但是如果名字不改 ,其他的欄位改 卻可以更新動作
     Dim UpdateStr As String
        Dim a, b, c, d, f, g, h, i, note As String
        a = DGView1.CurrentRow.Cells("名字").Value.ToString
        b = DGView1.CurrentRow.Cells("生日").Value.ToString
        c = DGView1.CurrentRow.Cells("地址").Value.ToString
        d = DGView1.CurrentRow.Cells("電話").Value.ToString
        f = DGView1.CurrentRow.Cells("行動電話").Value.ToString
        g = DGView1.CurrentRow.Cells("電子郵件").Value.ToString
        h = DGView1.CurrentRow.Cells("興趣").Value.ToString
        i = DGView1.CurrentRow.Cells("喜好").Value.ToString
        note = DGView1.CurrentRow.Cells("備註").Value.ToString
        UpdateStr = "update table2 set `名字` = '" + TextBox1.Text + "', `生日` ='" + TextBox2.Text + "'  , `地址` ='" + TextBox3.Text + "' , `電話` ='" + TextBox4.Text + "' , `行動電話`='" + TextBox5.Text + "' , `電子郵件`='" + TextBox6.Text + "', `興趣`='" + TextBox7.Text + "', `喜好`='" + TextBox8.Text + "', `備註`='" + RichTextBox1.Text + "'where 名字 =@a and 生日 =@b and 地址 =@c and 電話 =@d and 行動電話 =@f and 電子郵件 =@g and 興趣 =@h and 喜好 =@i and 備註 =@note"
    
        MyDataAdapter.UpdateCommand = New OleDbCommand(UpdateStr, conn)
    
        Dim myParameters(8) As OleDbParameter
    
        myParameters(0) = New OleDbParameter("名字", a)
        myParameters(1) = New OleDbParameter("生日", b)
        myParameters(2) = New OleDbParameter("地址", c)
        myParameters(3) = New OleDbParameter("電話", d)
        myParameters(4) = New OleDbParameter("行動電話", f)
        myParameters(5) = New OleDbParameter("電子郵件", g)
        myParameters(6) = New OleDbParameter("興趣", h)
        myParameters(7) = New OleDbParameter("喜好", i)
        myParameters(8) = New OleDbParameter("備註", note)
    
        MyDataAdapter.UpdateCommand.Parameters.AddRange(myParameters)
    
        MyDataAdapter.UpdateCommand.ExecuteNonQuery()
    2009年7月26日 上午 06:42

解答

  • HI,

    您可以檢查一下, 資料庫中的記錄的[名字]欄位是否為主索引鍵(Primary Key), 如果是主索引鍵, 則欄位的內容值不可以重複, 否則會更新失敗
    • 已提議為解答 Lolota Lee 2009年7月30日 上午 06:16
    • 已標示為解答 Lolota Lee 2009年7月31日 上午 05:02
    2009年7月27日 上午 01:40