none
無法從DataTable儲存DATA. RRS feed

  • 問題

  • 小的是c#新手,最近要寫一個PROJECT!要與ACCESS連結.但我從Data Sources 拉我的ACCESS table name 出去Form,Form顯示dataDataGridView 同 dataBindingNavigator

    dataDataGridView 能夠讀取ACCESS資料,dataBindingNavigator上面bindingNavigatorAddNewItem的加號能新增資料到ACCESS,

    新增資料後按dataBindingNavigatorSaveItem能夠儲存! 但儲存後按bindingNavigatorDeleteItem能夠移除該行ROW,卻無法按dataBindingNavigatorSaveItem儲存!他顯示ERROR{"當傳遞擁有已刪除資料列的 DataRow 集合時,Update 需要有效的 DeleteCommand。"}

    我沒有新增任何其他CODE在這張Form,從Data Sources 拉我的ACCESS table name 出去Form就是這樣:

    namespace Project
    {
        public partial class Admin1 : Form
        {
            public Admin1()
            {
                InitializeComponent();
                timer1.Start();

            }

            private void Admin1_Load(object sender, EventArgs e)
            {
                // TODO: This line of code loads data into the 'dataDataSet.Data' table. You can move, or remove it, as needed.
                this.dataTableAdapter.Fill(this.dataDataSet.Data);

            }

            private void dataBindingNavigatorSaveItem_Click_1(object sender, EventArgs e)
            {
                this.Validate();
                this.dataBindingSource.EndEdit();
                this.tableAdapterManager.UpdateAll(this.dataDataSet);
            }

    他顯示的是這句ERROR:   this.tableAdapterManager.UpdateAll(this.dataDataSet);  

    {"當傳遞擁有已刪除資料列的 DataRow 集合時,Update 需要有效的 DeleteCommand。"}

    該如何解決,我想新增後能修改,刪除,並儲存至ACCESS.

    2013年12月16日 下午 04:05

解答

  • 你這個設計方式是用比較自動化的做法去處理, 這種是要注意你的Access中的table都有primary key.

    這樣程式才會自動幫你產生刪除的語法...不過, 建議你之後可以嘗試手動去寫這些對應的語法


    LOLOTA - http://www.dotblogs.com.tw/lolota/

    • 已標示為解答 YeuGG 2013年12月17日 上午 06:40
    2013年12月17日 上午 01:49
    版主
  • 這可能是您的Access資料表沒有主索引鍵引起的, 您可以參考這篇文件為TableAdapter加入DeleteCommand, 或是為資料表加入主索引鍵來解決:How to DataAdapter Delete Command - OLEDB

    • 已標示為解答 YeuGG 2013年12月17日 上午 06:41
    2013年12月17日 上午 03:08

所有回覆

  • 你這個設計方式是用比較自動化的做法去處理, 這種是要注意你的Access中的table都有primary key.

    這樣程式才會自動幫你產生刪除的語法...不過, 建議你之後可以嘗試手動去寫這些對應的語法


    LOLOTA - http://www.dotblogs.com.tw/lolota/

    • 已標示為解答 YeuGG 2013年12月17日 上午 06:40
    2013年12月17日 上午 01:49
    版主
  • 這可能是您的Access資料表沒有主索引鍵引起的, 您可以參考這篇文件為TableAdapter加入DeleteCommand, 或是為資料表加入主索引鍵來解決:How to DataAdapter Delete Command - OLEDB

    • 已標示為解答 YeuGG 2013年12月17日 上午 06:41
    2013年12月17日 上午 03:08
  • 當使用自動處理資料庫時,會在背後自動建立 xxxxCommandBulider ,例如 OdbcCommandBulider / OledbCommandBulider ,可以翻翻線上手冊關於 CommandBulider 的限制。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2013年12月17日 下午 02:51
  • 謝謝你的解答,真的獲益良多!!可是現在還有個問題,我是有兩張Form的,我在Form1裡的textbox能夠新增資料至access,以後在Form2能夠看到ACCESS所有資料及剛剛新增的資料...可是如果我想一開始到Form2查看ACCESS資料就會顯示舊有ACCESS資料,如何才能一開始到Form2就能査看新的資料??
    2013年12月18日 上午 03:15
  • 去檢查你的Program.cs, 看看一開始run哪個form...

    LOLOTA - http://www.dotblogs.com.tw/lolota/

    2013年12月18日 上午 03:56
    版主