none
用vs2005 win from使用Access的資料庫,不能實際存檔 RRS feed

  • 問題

  • 請問:
    用vs2005 的Win Form裡使用MS Access資料庫時,
    由資料庫直接拖拉到Form,系統建立DataGridView等,
    當我按存檔時,表面是存了,但實際上沒存,這是那裡沒處理好?
    同方法SQL Server就沒問題
    謝謝
    這是裡面的Code:
    Private Sub Tab1BindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tab1BindingNavigatorSaveItem.Click
    Me.Validate()
    Me.Tab1BindingSource.EndEdit()
    Me.Tab1TableAdapter.Update(Me.DbtestDataSet.tab1)

    End Sub

    Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'TODO: This line of code loads data into the 'DbtestDataSet.tab1' table. You can move, or remove it, as needed.
    Me.Tab1TableAdapter.Fill(Me.DbtestDataSet.tab1)

    End Sub
    2006年2月22日 上午 01:39

解答

  • Dear Sir,

    請您確認下列權限:

    1. 程式執行時的帳號的權限

    2. 該 Acess 檔案及資料夾是否有寫入的權限

    Thanks

    Ray Yen

    2006年2月22日 上午 05:17

所有回覆

  • Dear Sir,

    請您確認下列權限:

    1. 程式執行時的帳號的權限

    2. 該 Acess 檔案及資料夾是否有寫入的權限

    Thanks

    Ray Yen

    2006年2月22日 上午 05:17
  • 您好:

    該 Acess 檔案及資料夾是否有寫入的權限,在哪裡檢查?

    這該如何去察看,我在Access產生資料庫,有建立索引及唯一鍵值,不知道還要做些什麼

    到了vs2005時,只是建立access的連線,用admin密碼空的,就拖拉資料表進來,產生DataGridView

    程式執行時的帳號的權限,在哪裡檢查?

    2005版是比較新,也沒書可以看,也沒得上課,請包涵

    謝謝

    2006年2月23日 上午 02:05
  • 這個問題我碰過

    用ODBC的連線就可以順利存檔

    其他的provider好像有點問題

    2006年2月24日 下午 12:22
  • 謝謝您的提示,我會試一試

    另外我發現到command的格式問題

    SQL Server 用 update cust set title=@title where no=@no

    在Access就是錯誤的語法,在填新值時,好像不能用@,不知道該用什麼符號?

    請教高手指導

    2006年2月25日 上午 01:00
  • 真的是如此,用ODBC連線就沒問題,這是Vs2005的問題嗎?請教微軟

    Access產生的命令如下:

    UPDATE        sch100
    SET                  [no] = ?, name = ?, bdate = ?, status = ?
    WHERE         ([no] = ?) AND (? = 1) AND (name IS NULL) AND (? = 1) AND (bdate IS NULL) AND
                              (? = 1) AND (status IS NULL) OR
                              ([no] = ?) AND (name = ?) AND (? = 1) AND (bdate IS NULL) AND (? = 1) AND
                              (status IS NULL) OR
                              ([no] = ?) AND (? = 1) AND (name IS NULL) AND (bdate = ?) AND (? = 1) AND
                              (status IS NULL) OR
                              ([no] = ?) AND (name = ?) AND (bdate = ?) AND (? = 1) AND (status IS NULL) OR
                              ([no] = ?) AND (? = 1) AND (name IS NULL) AND (? = 1) AND (bdate IS NULL) AND
                              (status = ?) OR
                              ([no] = ?) AND (name = ?) AND (? = 1) AND (bdate IS NULL) AND (status = ?) OR
                              ([no] = ?) AND (? = 1) AND (name IS NULL) AND (bdate = ?) AND (status = ?) OR
                              ([no] = ?) AND (name = ?) AND (bdate = ?) AND (status = ?)

    2006年2月25日 下午 12:06
  • 為什麼 where 裡產生這麼多東西??

    Access是用?代表輸入時的內容

    SQL Server 用@原欄位名稱

    若是不在SQL Command裡,而是外面,如要運算時該如何用?

    這樣是不能執行的,對不對:有個no的欄位名稱

    dim s as string = @no

    s=s&"abc"

    2006年2月25日 下午 12:28
  • 友站的網友告訴我,測試直接去run exe.

    所以之前的測試都是點綠色箭頭的Start debgging ,
    Access 的資料庫是放在專案主目錄下,
    後來我去debug目錄下,需把mdb copy 到 debug底下,在檔案總管去run 那exe,確實可以正確存檔,
    這是為什麼? 難道不能點綠色箭頭的Start debgging

    2006年2月28日 上午 07:51
  • 我试了,果然不能.我想可能(只是可能,我不太确定)主要是TableAdapter的问题吧.因为我试了以下的代码,同样是使用access数据库,但是能更新与删除(实际的数据库).以下是我的代码段,请各位指教:

            private void button1_Click(object sender, EventArgs e)
            {
                string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\smile\My Documents\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\MCDB.mdb";
                string sql = "select * from ChildTable Where UID = '" + textBox1.Text + "'";
                using (OleDbConnection cn = new OleDbConnection(strConn))
                {
                    cn.Open();

                    OleDbCommand cmd = new OleDbCommand(sql, cn);
                   
                    OleDbDataAdapter adpt = new OleDbDataAdapter(cmd);
                   
                    DataTable table = new DataTable("ChildTable");
                   
                    adpt.Fill(table);
                   
                    DataSet ds = new DataSet();
                   
                    ds.Tables.Add(table);

                    adpt.SelectCommand = new OleDbCommand("insert into ChildTable(UID,床位号) values('"+textBox1.Text.Trim()+"','"+textBox1.Text.Trim()+"')",cn);
                   
                    adpt.Fill(ds,"ChildTable");
                    //成功更新数据库!
                }
            }

    我的msn是bdbox@hotmail.com,欢印来信指教,谢谢!

    2006年3月28日 上午 06:50
  • 早前我也出現同樣的問題...

    之後再試......竟然成功....

    但現在再試時, 就不能了....

    真不知道是什麼問題?

    2006年3月29日 上午 04:22
  • 有OleDbDataAdapter在2005這應該是WebForm吧

    angus203您出現的問題也一樣啊﹗那現在呢?佈署安裝後,Uesr就不會有不能存檔的問題,這應該是設定或Access檔案放的位置(目錄)問題

    2006年3月30日 上午 01:31
  •  james707 寫信:

    有OleDbDataAdapter在2005這應該是WebForm吧

    angus203您出現的問題也一樣啊﹗那現在呢?佈署安裝後,Uesr就不會有不能存檔的問題,這應該是設定或Access檔案放的位置(目錄)問題

    我只成功一次,實時存檔(F5 run , close , re run , 更新data 存在)

    現在再做一次(方法一樣),就不能成功

    2006年3月30日 上午 05:25
  • 只要不写Me.Validate()就可以了
    2006年4月5日 上午 04:50
  • 我是去debug目錄下,需把mdb copy 到 debug底下,在檔案總管去run 那exe,確實可以正確存檔.

    等正式佈署安裝時,就可以正確每次都可以存檔.

    請教︰Me.Validate()是在哪裡寫的還是定義的

    謝謝

    2006年4月6日 上午 01:11