public bool UpdateBooksPurchaseCardMain(DataTable BPurchaseCard_Main,
            DataTable BPurchaseCard_Sale_Area,
            DataTable BPurchaseCard_Chain,
            DataTable BPurchaseCard_Nondiss_St,
            DataTable RESOURCE,
            DataTable SHOP,
            DataTable RefGoods)
        {
            int PID = 0;
            using (DbConnection connection = USEDB.CreateConnection())
            {
                connection.Open();
                DbTransaction transaction = connection.BeginTransaction();
                try
                {
                    if (BPurchaseCard_Main.Rows.Count == 0) { throw new Exception("沒有圖書採購卡資料"); }

                    PID = Convert.ToInt32(BPurchaseCard_Main.Rows[0]["ID"].ToString());
                    //Update PurchaseCard_Main
                    DBO.MKT_BooksPurchaseCardMainDBO dbo = new MKT_BooksPurchaseCardMainDBO(ref USEDB);
                    dbo.doUpdate(BPurchaseCard_Main.Rows[0], ref transaction);

                    //Insert Sale_Area
                    DBO.MKT_BooksPurchaseCardSaleAreaDBO dboArea = new MKT_BooksPurchaseCardSaleAreaDBO(ref USEDB);
                    dboArea.doDeleteByPID(PID.ToString(), ref transaction);
                    foreach (DataRow dr in BPurchaseCard_Sale_Area.Rows)
                    {
                        dr["PID"] = PID;
                        dboArea.doCreate(dr, ref transaction);
                    }

                    //Insert Chain 
                    DBO.MKT_BooksPurchaseCardChainDBO dboChain = new MKT_BooksPurchaseCardChainDBO(ref USEDB);
                    dboChain.doDeleteByPID(PID.ToString(), ref transaction);
                    foreach (DataRow dr in BPurchaseCard_Chain.Rows)
                    {
                        dr["PID"] = PID;
                        dboChain.doCreate(dr, ref transaction);
                    }

                    //Insert Nondiss_st
                    DBO.MKT_BooksPurchaseCardNdissStDBO dboNondiss = new MKT_BooksPurchaseCardNdissStDBO(ref USEDB);
                    dboNondiss.doDeleteByPID(PID.ToString(), ref transaction);
                    foreach (DataRow dr in BPurchaseCard_Nondiss_St.Rows)
                    {
                        dr["PID"] = PID;
                        dboNondiss.doCreate(dr, ref transaction);
                    }
                    //Insert RESOURCE
                    DBO.MKT_BooksPurchaseCardResourceDBO dboRESOURCE = new MKT_BooksPurchaseCardResourceDBO(ref USEDB);
                    dboRESOURCE.doDeleteByPID(PID.ToString(), ref transaction);
                    foreach (DataRow dr in RESOURCE.Rows)
                    {
                        dr["PID"] = PID;
                        dboRESOURCE.doCreate(dr, ref transaction);
                    }
                    //Insert SHOP
                    DBO.MKT_BooksPurchaseCardShopDBO dboSHOP = new MKT_BooksPurchaseCardShopDBO(ref USEDB);
                    dboSHOP.doDeleteByPID(PID.ToString(), ref transaction);
                    foreach (DataRow dr in SHOP.Rows)
                    {
                        dr["PID"] = PID;
                        dboSHOP.doCreate(dr, ref transaction);
                    }
                    //Insert RefGoods
                    DBO.MKT_BooksPurchaseCardRefgoodsDBO dboRefGoods = new MKT_BooksPurchaseCardRefgoodsDBO(ref USEDB);
                    dboRefGoods.doDeleteByPID(PID.ToString(), ref transaction);
                    foreach (DataRow dr in RefGoods.Rows)
                    {
                        dr["PID"] = PID;
                        dboRefGoods.doCreate(dr, ref transaction);
                    }
                    // Commit the transaction
                    transaction.Commit();

                    return true;
                }
                catch
                {
                    // Rollback transaction 
                    transaction.Rollback();
                    return false;
                }
                connection.Close();
            }
        }