Ejemplo n.º 1
0
        /// <summary>
        /// hàm này tiến hành cập nhật lại CSDL rất lớn liên quang 5000 dòng
        /// 
        /// </summary>
        public void ChuyenDoi()
        {
            DatabaseHelper help = new DatabaseHelper();
            help.ConnectDatabase();
            // insert
            using (var dbcxtransaction = help.ent.Database.BeginTransaction())
            {
                try
                {
                    for (int i = 0; i < tb.Rows.Count - 1; i++)
                    {
                        string Ma_phieu_nhap = tb.Rows[i]["column1"].ToString();
                        DateTime Ngay_lap = DateTime.Parse(tb.Rows[i]["column2"].ToString());
                        string Kho_nhan = tb.Rows[i]["column3"].ToString();
                        string Ly_do = tb.Rows[i]["column4"].ToString();
                        string Ma_vat_tu = tb.Rows[i]["column5"].ToString();
                        string Ten_vat_tu = tb.Rows[i]["column6"].ToString();
                        string Chat_luong = tb.Rows[i]["column7"].ToString();
                        string DVT = tb.Rows[i]["column8"].ToString();
                        string So_luong_thuc_lanh = tb.Rows[i]["column9"].ToString();
                        string Don_gia = tb.Rows[i]["column10"].ToString();
                        string Thanh_tien = tb.Rows[i]["column11"].ToString();
                        clsPhieuNhapKho pnk = new clsPhieuNhapKho();
                        if (pnk.CheckTonTaiSoDK(Ma_phieu_nhap, help) == false)
                        {
                            pnk.Ma_phieu_nhap = Ma_phieu_nhap;
                            pnk.isGoiDau = rdoPhieuGoiDau.Checked;
                            pnk.isCanTru = false;
                            pnk.Ngay_lap = Ngay_lap;
                            pnk.Kho_nhan = Kho_nhan;
                            pnk.Ly_do = Ly_do;
                            clsLoaiPhieuNhap LPN = new clsLoaiPhieuNhap();
                            LPN.Ma_LPN = Loai_PN;
                            pnk.ID_Loai_Phieu_Nhap = LPN.GetFirst(help);
                            pnk.ID_khoNhan = idkho;
                            if ( pnk.Insert(help) == 0)
                            {
                                dbcxtransaction.Rollback();
                                MessageBox.Show("insert thất bại tại dòng !" + i);
                                return;
                            }

                        }

                        clsChi_Tiet_Phieu_Nhap_Vat_Tu ctpn = new clsChi_Tiet_Phieu_Nhap_Vat_Tu();
                        ctpn.Ma_vat_tu = Ma_vat_tu;
                        ctpn.Ma_phieu_nhap = Ma_phieu_nhap;
                        ctpn.ID_Chat_luong = Chat_luong.Contains("mới") ? 1 : 2;
                        //kiểm tra xem vật tư đã có trong csdl chưa nếu chưa thêm vào
                        clsDM_DonViTinh DMDVT = new clsDM_DonViTinh();
                        if (ctpn.CheckTonTaiSoDK(help) == false)
                        {

                            DMDVT.Ten_don_vi_tinh = DVT;
                            if (DMDVT.hasDuplicateRow(help) == false)
                            {
                                //nếu chưa có thì insert dòng mới
                                DMDVT.Insert(help);
                            }
                            //tiến hành insert 5000 dòng dữ liệu từ phiếu nhập
                        }
                        ctpn.ID_Don_vi_tinh = DMDVT.getMATuTen(DVT, help);
                        //kiểm tra mã vật tư đã tồn tại chưa trong CSDL
                        clsDMVatTu vt = new clsDMVatTu();
                        vt.Ma_vat_tu = Ma_vat_tu;
                        vt.Ten_vat_tu = Ten_vat_tu;
                        vt.ID_Don_vi_tinh = ctpn.ID_Don_vi_tinh;
                        if (vt.KiemTraTrungMa(help) == false)
                        {
                            vt.Insert(help);
                        }
                        ctpn.So_luong_thuc_lanh = decimal.Parse(So_luong_thuc_lanh);
                        ctpn.Insert(help);
                        backgroundWorker1.ReportProgress(i);
                    }
                    dbcxtransaction.Commit();
                    backgroundWorker1.ReportProgress(0);
                    MessageBox.Show("Thêm thành công!");
                }
                catch (Exception ex)
                {
                    dbcxtransaction.Rollback();  // Get stack trace for the exception with source file information
                    MessageBox.Show(Utilities.clsThamSoUtilities.COException(ex));
                    return;

                }

            }
        }