none
無法刪除資料列,指定的資料列不在目前的DataRowCollection中。 RRS feed

  • 問題

  • 1. 請詳列開發環境版本與語系。
    •Visual Studio 2008 Professional 繁體中文版
    •編譯器語系:Visual Basic
    •作業系統:Windows 7 Professional 64位元
    •作業系統語系:繁體中文版
    2. 請描述預期成果。
    •可以刪除資料列


    2017年10月16日 下午 09:46

解答

  • 新增DataRow到DataTable的寫法大概是這樣:

    Dim dr As DataRow = dt.NewRow()
    dr("欄位")=內容值
    ...
    dt.Rows.Add(dr)
    因為您的dr並未加入到DataTable, 嘗試刪除就會看到上述的錯誤.

    • 已標示為解答 fanchiangkun 2017年10月22日 下午 11:50
    2017年10月17日 上午 12:34
  • 既然是要刪除,為什麼會用到 NewRow ? NewRow 是產生一個新的 DataRow 用的。

    刪除的作法當然是在 DataTable 中先找出要被刪除的 DataRow (也就是這個 DataRow 是本來就存在的),然後再刪除。

    參考

    如何:在 DataTable 中找出特定資料列


    上文中用兩種方式:

    一個用的是   DataRowCollection.Find 方法
    另一個是 DataTable.Select 方法

     

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 fanchiangkun 2017年10月22日 下午 11:51
    2017年10月18日 上午 01:55
    版主

所有回覆

  • 新增DataRow到DataTable的寫法大概是這樣:

    Dim dr As DataRow = dt.NewRow()
    dr("欄位")=內容值
    ...
    dt.Rows.Add(dr)
    因為您的dr並未加入到DataTable, 嘗試刪除就會看到上述的錯誤.

    • 已標示為解答 fanchiangkun 2017年10月22日 下午 11:50
    2017年10月17日 上午 12:34
  • 修改成以下這樣,還是無法刪除資料列。
    cmd.Parameters.Add("@ID", SqlDbType.NVarChar, 50, "ID")
    Dim dt As DataTable = ds.Tables("Table3")
    Dim dr As DataRow = dt.NewRow()
    dr("ID") = TextBox10.Text
    dt.Rows.Add(dr)


    2017年10月17日 上午 12:54
  • 錯誤訊息是什麼?
    2017年10月18日 上午 12:10
  • 既然是要刪除,為什麼會用到 NewRow ? NewRow 是產生一個新的 DataRow 用的。

    刪除的作法當然是在 DataTable 中先找出要被刪除的 DataRow (也就是這個 DataRow 是本來就存在的),然後再刪除。

    參考

    如何:在 DataTable 中找出特定資料列


    上文中用兩種方式:

    一個用的是   DataRowCollection.Find 方法
    另一個是 DataTable.Select 方法

     

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 fanchiangkun 2017年10月22日 下午 11:51
    2017年10月18日 上午 01:55
    版主
  • 感謝Bill提供相關資訊,上網研究一下。
    請教您幾個問題,感謝您的回覆。
    1.如何查詢並顯示出DataTable的內容?確認有資料才能在DataTable中找出特定資料列?
    2.我的資料表內有主索引鍵,執行時怎麼會顯示資料表沒有主索引鍵呢?

    2017年10月18日 下午 09:12
  • 1) 您可以用偵錯工具在程式中斷時檢視DataTable的內容, Visual Studio會提示一個放大鏡的符號, 點選可以檢視DataTable的內容

    2) 指的可能是DataTable沒有主索引鍵, 不是資料表沒有主索引鍵, 您可以檢查DataTable.PrimaryKey屬性的內容值確認

    2017年10月19日 上午 12:24
  • 1)是指這個嗎?

    2)dt.PrimaryKey不知道該輸入什麼?



    2017年10月19日 上午 01:46
  • 有關PK的部分,可以參考一下這個

    https://support.microsoft.com/en-us/help/310373/the-dataadapter-fill-method-does-not-set-all-of-the-properties-of-the


    請注意討論區相關規則,良好的討論環境需要大家的共同努力

    2017年10月19日 上午 09:49
  • adapter為什麼找不到MissingSchemaAction

    2017年10月19日 下午 05:10
  • 先加入FillSchema的動作試試看,PK的部分應該就會進到DataTable裡面。

    請注意討論區相關規則,良好的討論環境需要大家的共同努力

    2017年10月19日 下午 05:24
  • PK的部分有加入到DataTable裡面,adapter還是找不到MissingSchemaAction。



    2017年10月19日 下午 05:40
  • 1) 對

    2) 欄位名稱

    另外, MissingSchemaAction可以參考:

    DataAdapter.MissingSchemaAction 屬性

    2017年10月20日 上午 12:31
  • 只會刪除第一筆資料,怎麼會這樣呢?
    2017年10月20日 上午 11:30
  • 不太懂你的意思,程式裡面dt.Rows.Remove這行應就會把找到的資料列刪除,但是下面接著ds.Tables("Table3").Rows(0).Delete又去刪了第0列,這樣一次刪除兩列?


    請注意討論區相關規則,良好的討論環境需要大家的共同努力


    • 已編輯 bauann 2017年10月20日 下午 02:34 錯別字
    2017年10月20日 下午 02:34
  • 'ds.Tables("Table3").Rows(0).Delete
    沒有資料被刪除
    表示根本沒有找到要刪除的資料
    2017年10月20日 下午 02:39
  • 既然是要刪除,為什麼會用到 NewRow ? NewRow 是產生一個新的 DataRow 用的。

    刪除的作法當然是在 DataTable 中先找出要被刪除的 DataRow (也就是這個 DataRow 是本來就存在的),然後再刪除。

    參考

    如何:在 DataTable 中找出特定資料列


    上文中用兩種方式:

    一個用的是   DataRowCollection.Find 方法
    另一個是 DataTable.Select 方法

     

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    請問有找到foundRow,為什麼無法當做where的查詢條件?
    Dim s As String = TextBox10.Text
            Dim foundRow As DataRow = ds.Tables("Table3").Rows.Find(s)
            If foundRow IsNot Nothing Then
                MsgBox(foundRow(0).ToString())
            Else
                MsgBox("A row with the primary key of" & s & "could not be found")
            End If
     
    2017年10月20日 下午 04:08
  • 不太懂你的意思,程式裡面dt.Rows.Remove這行應就會把找到的資料列刪除,但是下面接著ds.Tables("Table3").Rows(0).Delete又去刪了第0列,這樣一次刪除兩列?


    請注意討論區相關規則,良好的討論環境需要大家的共同努力


    'ds.Tables("Table3").Rows(0).Delete
    沒有資料被刪除
    表示根本沒有找到要刪除的資料
    2017年10月20日 下午 04:09