none
2个有关系的DataTable中主鍵PK和外鍵FK的必要設置 和 使用CommandBuilder 的更新順序操作 RRS feed

  • 問題

  •  

     

    本人原本用JAVA,最近剛學會用VB2005不久,在用ACCESS 2003 +VB2005 幫親戚做個自家用的進銷存系統. 主要問題是做到新增進貨時, 如果新增進貨時,會先建兩個DataTable ,最終放到1DataSet, 用OleDbCommandBuilder分別操作ACCESS的兩個表,一個是 當前庫存表, 一個是 進貨記錄表. 兩個DataTable 分別暫存兩個表相應的資料,以便後面操作.

     

    兩個表的主鍵和外鍵已經在ACCESS數據庫中確定好,如下:

     

    當前庫存表  ---1                               進貨記錄表  --- 2

     

          商品編號 (自增長類型)  PK                進貨編號  (自增長類型)  PK

          商品名字                                                 商品編號  FK

          型號規格                                                 商品名稱

          .........                                                        型號規格

          .....                                                            .........

                                                                           .....

     

    1 商品編號 是主鍵

    2 進貨編號 是主鍵, 商品編號 是表1的商品編號的外鍵.

     

     

    現在問題是:

     

    使用CommandBuilder來操作時,2全是insert這種操作,  但表1卻有3種情況:

     

    情況1

    新進貨時,全是全新入庫, 1只有insert操作

     

    情況2

    新進貨時,全是補充入庫,1只有update操作

     

    情況3

    新進貨時,有些是全新入庫,有些是補充入庫, 1會涉及到inert update操作

     

     

     

    由於這兩個表有主鍵和外鍵的關係, 請問兩個DataTable的上的相應的主鍵和外鍵的列應該怎

     

    麼樣進行設置 ?  請具體說說過程.

     

    執行commandbuilder之前, DataTable中每行的主鍵列必須有值嗎 ? (特別是第3種情況)

     

    設置了以後, 使用CommandBuilder,按這主外鍵的關係, 要按什麼順序來執行, 才能使 1,

     

    2的中主鍵外鍵中都有值,而且全是對得上的???? 
    (
    雖然個人認為是先12,但不知道對不對
    .)

     

     

    PS:  打完這個問題, 又開始感覺到是不是一開始就是用ACCESS建立數據表結構關係的時候就出問題了,

         如果是還請大家指出問題所在並給個意見 或  解決方法, 不管是數據庫表結構 還是 上面所述的問題,

            請大家多多指點
    .謝謝.

    • 已編輯 Mppadx 2009年7月19日 下午 06:55
    2009年7月19日 下午 06:43

解答

  • 1. 相同的欄位如果沒必要應該不用重複出現在每個資料表吧(ex: 商品名稱, 型號規格之類的)
    2. CommandBuilder根據小歐(注意:我不是小歐)測試的結果, 當欄位一多效率會很差. 我個人是偏好使用傳統ADO.NET的方式, 乖乖用 DbConnection, DbDataAdapter,DbCommnad, DbDataReader 之類的(正確來說是它們的衍生類別) , 來做資料庫操作.
    請關心自己的問題,不要問了就放空;這是對別人與自己的尊重
    2009年7月19日 下午 07:14
    版主