none
抓Access到DataGridView,再回存問題?? RRS feed

  • 問題

  • 環境:

    VS2005

    Access2003

    C#

    請問各位大大~

    這是讀取ACCESS的程式碼,在我回存到Access的時候出現下面的錯誤訊息,請問是哪裏出現問題??

     

    出現下面的訊息

    不會傳回任何重要資料行資訊的 SelectCommand 不支援 UpdateCommand 動態 SQL 的產生。

    請問我該對 UpdateCommand 做什麼指令嗎??

     

     

    try{
                    String selectCmd = "select * from customer";
                    da.SelectCommand = new OleDbCommand(selectCmd, conn);
                    //MessageBox.Show(da.UpdateCommand.CommandText);
                    OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
                    ds= new DataSet();
                    da.Fill(ds, "customer");
                    DataGridView1.DataSource = ds.Tables["customer"];
                    //ds.AcceptChanges();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "錯誤訊息");
                }

     

    //回存到ACCESS

    private void DataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
            {

                da.Update(ds, "customer");
               
            }




    IDS
    2010年11月25日 上午 05:20

解答

所有回覆

  • 不要使用 Select * 查詢, 先改為明確指定欄位名稱的查詢, ex: Select 欄位1, 欄位2 FROM 資料表
    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年11月25日 上午 05:47
  • Hi!

    1. 您的 customer 資料表,有設定 Primary Key 值欄位嗎?

    2. 試試看設定 SqlDataAdapter 物件的 UpdateCommand 和 DeleteCommand 屬性之後再執行

    http://msdn.microsoft.com/zh-tw/library/system.data.sqlclient.sqldataadapter.updatecommand.aspx

    http://social.msdn.microsoft.com/Forums/zh-TW/242/thread/f2c04fc7-8c89-406e-8454-564fbe18667e 

    http://www.dotblogs.com.tw/puma/archive/2009/05/23/8535.aspx


    歡迎參觀我的Blog.NET菜鳥自救會
    • 已標示為解答 kentsl 2010年11月25日 上午 07:01
    2010年11月25日 上午 05:58
  • da.Update()會觸發更新 UpdateCommand 那 InsertCommand 該如何操作??? 查了一下資料,好像都是寫該怎樣用,沒找到如何觸發??
    IDS
    2010年11月26日 上午 01:53
  • 一樣是OledbDataAdapter.Update() Method

    在MSDN文件中 DbDataAdapter. . :: . Update 方法 (因為OledbDataAdpater.Update() 是繼承DbDataAdapter.Update() 既有Method) 的說明

    針對 DataSet 中每個插入、更新或刪除的資料列,呼叫個別的 INSERT、UPDATE 或 DELETE 陳述式。

    所以你在 OleDbDataAdapter 類別 這一頁的範例就是在說明如何應用這些Command



    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年11月26日 上午 03:36
  • Bill 大大~試過OK了,感謝您的答覆

     

    EX:

     

     da.UpdateCommand.Parameters.Add("@icount", OleDbType.LongVarChar, 20, "icount");

                    da.InsertCommand.Parameters.Add("@compony1", OleDbType.LongVarChar, 20, "company1");

     

    我就是少傳參數才會錯誤的!!!



    IDS
    • 已編輯 kentsl 2010年11月26日 上午 05:26 少了感謝回覆者的話
    2010年11月26日 上午 05:25
  • 補充一個和你這問題相關的東西, 也許接下來你會用得到, 這玩意就就是DataRowState.

    相關文章內容為

    [以 DataAdapter 更新資料來源 (ADO.NET) ]

    [DataRow. RowState 屬性 ]

    [DataRowState 列舉型別 ]

    這對於你以後應用DbDataAdapter是有幫助的, 可以花點時間研究研究


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