示例#1
0
        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            this.Cursor          = Cursors.Arrow;
            dataGridView1.Cursor = Cursors.Arrow;
            dataGridView2.Cursor = Cursors.Arrow;

            if (e.Result != null)
            {
                ParamAsynResult result = e.Result as ParamAsynResult;
                m_dstamung            = result.Data;
                dgDanhsach.DataSource = result.Data.Tables[0];
                tmn_Sotien.Text       = lan.Change_language_MessageText(result.sohoadon.ToString() + " HĐ = " + result.asotienton.ToString("###,###,###,##0.##") + " Đ");
                // sohoadon = 0;
                // asotienton = 0;
                dgDanhsach.EndEdit();
            }
            else
            {
                try
                {
                    CurrencyManager cm = (CurrencyManager)(BindingContext[dgDanhsach.DataSource, dgDanhsach.DataMember]);
                    DataView        dv = (DataView)(cm.List);
                    dv.Table.Rows.Clear();
                }
                catch
                {
                }
            }
            toolStripProgressBar1.Value = 0;
            butTim.Enabled = true;
        }
示例#2
0
        private void f_Load_DG()
        {
            this.Cursor       = Cursors.WaitCursor;
            tmn_Timnhanh.Text = lan.Change_language_MessageText("Tìm kiếm");
            ParamAsynResult agr = new ParamAsynResult();

            agr.Ngay     = txtTN.Value;
            agr.m_v      = m_v;
            agr.m_userid = m_userid;
            dgDanhsach.AutoGenerateColumns = false;
            butTim.Enabled = false;
            backgroundWorker1.RunWorkerAsync(agr);
        }
示例#3
0
        void fStatus_WorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            ParamAsynResult dss = e.Result as ParamAsynResult;

            if (dss.ds.Tables[0].Rows.Count == 0)
            {
                MessageBox.Show(lan.Change_language_MessageText("Không có số liệu !"), AccessData.Msg);
            }
            else
            {
                //  string sql = "select maql,mabn,traituyen from xxx.bhyt ";
                dllReportM.frmReport f = new dllReportM.frmReport(m, dss.ds, dss.NgayExp + " " + dss.DiaDiemExp, "rptTKchuyenden.rpt");
                f.ShowDialog();
            }
        }
示例#4
0
        private void butIn_Click(object sender, System.EventArgs e)
        {
            frmStatusProcess fStatus = new frmStatusProcess("Tổng hợp thông tin");

            fStatus.DoWork          += new frmStatusProcess.DoWorkEventHandler(fStatus_DoWork);
            fStatus.WorkerCompleted += new RunWorkerCompletedEventHandler(fStatus_WorkerCompleted);
            string t1 = "", sql_exp = "", t2 = solieu.Text;

            ds = null;

            if (tu.Text != "" && den.Text != "")
            {
                sql_exp += " and " + m.for_ngay("a.ngay", "'dd/mm/yyyy'") + " between to_date('" + tu.Text + "','dd/mm/yyyy') and to_date('" + den.Text + "','dd/mm/yyyy')";
                t1       = "Từ ngày " + tu.Text + " Đến ngày " + den.Text;
                if (tu.Text == den.Text)
                {
                    t1 = "Ngày " + tu.Text;
                }
            }
            if (matt.SelectedIndex != -1)
            {
                sql_exp += " and substr(b.mabv,1,3)='" + matt.SelectedValue.ToString() + "'";
                t2      += "," + matt.Text;
            }
            if (matuyen.SelectedIndex != -1)
            {
                sql_exp += " and h.matuyen='" + matuyen.SelectedValue.ToString() + "'";
                t2      += "," + matuyen.Text;
            }
            if (madstt.Text != "")
            {
                sql_exp += " and b.mabv='" + madstt.Text + "'";
                t2      += "," + tendstt.Text;
            }
            sql_exp += " order by mabv,ngay";
            ParamAsynResult arg = new ParamAsynResult();

            arg.DiaDiemExp = t2;
            arg.NgayExp    = t1;
            arg.SqlExp     = sql_exp;
            arg.TuNgay     = tu.Text;
            arg.DenNgay    = den.Text;
            arg.SelectCase = solieu.SelectedIndex;
            fStatus.ShowRunWorkerAsync(arg);
        }
示例#5
0
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            decimal         asotienton = 0;
            int             sohoadon   = 0;
            ParamAsynResult arg        = (ParamAsynResult)e.Argument;

            backgroundWorker1.ReportProgress(0);
            try
            {
                string ngay = arg.Ngay.ToString("dd/MM/yyyy");
                string sql = "", aexp = "", aexp1 = "";
                //try
                //{
                //    alimit = int.Parse(txtLimit.Value.ToString());
                //}
                //catch
                //{
                //    alimit = 0;
                //}m_
                string    mmyy = arg.m_v.get_mmyy(txtDN.Value.ToString("dd/MM/yyyy"));
                DataTable dt   = new DataTable();

                aexp  = "where to_date(to_char(a.ngay,'dd/mm/yyyy'),'dd/mm/yyyy') <= to_date('" + ngay + "','dd/mm/yyyy') ";
                aexp1 = " where (to_date(to_char(a.ngay,'dd/mm/yyyy'),'dd/mm/yyyy') <= to_date('" + ngay +
                        "','dd/mm/yyyy') and a.done=0) or (a.done=1 and  to_date(to_char(a.ngaytra,'dd/mm/yyyy'),'dd/mm/yyyy') > to_date('" +
                        ngay + "','dd/mm/yyyy') and  to_date(to_char(a.ngay,'dd/mm/yyyy'),'dd/mm/yyyy') <=" +
                        " to_date('" + ngay + "','dd/mm/yyyy') ) ";

                //sql = "select case when a.done = 0 then 1 else case when to_date(to_char(a.ngaytra,'dd/mm/yyyy'),'dd/mm/yyyy') > to_date('" +
                //    txtTN.Text.Substring(0, 10) + "','dd/mm/yyyy')  then 1 else 0 end end as ton, a.mabn,g.hoten,case when g.ngaysinh is null"+
                //    " then g.namsinh else to_char(g.ngaysinh,'dd/mm/yyyy') end as namsinh,h.ten as gioitinh,a.id,to_char(a.ngay,'dd/mm/yyyy')"+
                //    " as ngay,b.sohieu,to_char(a.sobienlai,'9999999999') as sobienlai,case when a.done = 0 then a.sotien else case when "+
                //    "to_date(to_char(a.ngaytra,'dd/mm/yyyy'),'dd/mm/yyyy') > to_date('" + txtTN.Text.Substring(0, 10) + "','dd/mm/yyyy')  "+
                //    "then a.sotien else 0 end end as sotienton," +
                //    " a.sotien,f.tenkp,d.ten as tenloaidv, e.ten as tenloaibn,a.lanin,c.hoten||' ('||c.userid||')' "+
                //    "as user, trim(g.sonha||' '||g.thon) as diachi"+
                //    " from medibv.v_tamung a left join medibv.v_quyenso b on a.quyenso=b.id left join "+
                //    "medibv.v_dlogin c on a.userid=c.id left join medibv.v_tenloaivp d on a.loai=d.ma left join medibv.v_loaibn"+
                //    " e on a.loaibn=e.id left join medibv.btdkp_bv f on a.makp=f.makp left join medibv.btdbn g on a.mabn=g.mabn "+
                //    "left join medibv.dmphai h on g.phai=h.ma " + aexp;

                sql = "select case when a.done = 0 then 1 else case when to_date(to_char(a.ngaytra,'dd/mm/yyyy'),'dd/mm/yyyy') > to_date('" +
                      ngay + "','dd/mm/yyyy')  then 1 else 0 end end as ton, a.mabn,g.hoten,case when g.ngaysinh is null" +
                      " then g.namsinh else to_char(g.ngaysinh,'dd/mm/yyyy') end as namsinh,h.ten as gioitinh,a.id,to_char(a.ngay,'dd/mm/yyyy')" +
                      " as ngay,b.sohieu,to_char(a.sobienlai,'9999999999') as sobienlai,case when a.done = 0 then a.sotien else case when " +
                      "to_date(to_char(a.ngaytra,'dd/mm/yyyy'),'dd/mm/yyyy') > to_date('" + ngay + "','dd/mm/yyyy')  " +
                      "then a.sotien else 0 end end as sotienton," +
                      " a.sotien,f.tenkp,d.ten as tenloaidv, e.ten as tenloaibn,a.lanin,c.hoten||' ('||c.userid||')' " +
                      "as user, trim(g.sonha||' '||g.thon) as diachi" +
                      " from " + arg.m_v.user + mmyy + ".v_tamung a left join medibv.v_quyenso b on a.quyenso=b.id left join " +
                      "medibv.v_dlogin c on a.userid=c.id left join medibv.v_tenloaivp d on a.loai=d.ma left join medibv.v_loaibn" +
                      " e on a.loaibn=e.id left join medibv.btdkp_bv f on a.makp=f.makp left join medibv.btdbn g on a.mabn=g.mabn " +
                      "left join medibv.dmphai h on g.phai=h.ma " + aexp;
                //ton tamung

                sql += " union all ";
                sql += " select 1 as ton, a.mabn,g.hoten,case when g.ngaysinh is null then g.namsinh else " +
                       "to_char(g.ngaysinh,'dd/mm/yyyy') end as namsinh,h.ten as gioitinh,a.id,to_char(a.ngay,'dd/mm/yyyy')" +
                       " as ngay,b.sohieu,to_char(a.sobienlai,'9999999999') as sobienlai,a.sotien as sotienton," +
                       " 0 as sotien,f.tenkp,d.ten as tenloaidv, e.ten as tenloaibn,a.lanin,c.hoten||' ('||c.userid||')' " +
                       "as user, trim(g.sonha||' '||g.thon) as diachi";
                sql += " from medibv" + mmyy + ".v_tontamung a left join medibv.v_quyenso b on a.quyenso=b.id" +
                       " left join medibv.v_dlogin c on a.userid=c.id left join medibv.v_tenloaivp d on a.loai=d.ma left join" +
                       " medibv.v_loaibn e on a.loaibn=e.id left join medibv.btdkp_bv f on a.makp=f.makp left join medibv.btdbn" +
                       " g on a.mabn=g.mabn left join medibv.dmphai h on g.phai=h.ma " + aexp1;

                arg.Data = arg.m_v.get_data(sql);
                backgroundWorker1.ReportProgress(70);
                arg.Data.Tables[0].Columns.Add("chon", typeof(bool));
                foreach (DataRow r in arg.Data.Tables[0].Rows)
                {
                    r["chon"] = false;
                    sohoadon++;
                    asotienton += decimal.Parse(r["sotienton"].ToString());
                }
                //m_dstamung.Dispose();
                //m_dstamung = new DataSet();
                //m_dstamung.Tables.Add(dt);
                arg.sohoadon   = sohoadon;
                arg.asotienton = asotienton;
                e.Result       = arg;
                //dataGridView1.DataSource = m_v.get_data_mmyy(sql, txtTN.Text.Substring(0, 10), txtTN.Text.Substring(0, 10), false).Tables[0];
                //dgDanhsach.Update();
                backgroundWorker1.ReportProgress(100);
            }
            catch
            {
                e.Result = null;
            }
        }
示例#6
0
        void fStatus_DoWork(BackgroundWorker sender, DoWorkEventArgs e)
        {
            ParamAsynResult agr     = e.Argument as ParamAsynResult;
            string          sql_exp = agr.SqlExp;

            sender.ReportProgress(10, "Đang tổng hợp số liệu.....");
            switch (agr.SelectCase)
            {
            case 0:    //Nội trú
            {
                sql  = "select distinct a.mabn,e.soluutru,c.hoten,substr(g.tuoivao,1,3)||decode(substr(g.tuoivao,4,1),0,'TU',decode(substr(g.tuoivao,4,1),1,'TH',decode(substr(g.tuoivao,4,1),2,'NG','GI'))) as tuoivao,case when c.phai =0 then 'NAM' else 'NỮ' end gioitinh,";
                sql += "c.sonha,c.thon,i.tenpxa,j.tenquan,k.tentt,c.cholam ,";
                sql += "d.quanhe||' '||d.hoten as quanhe,b.chandoan chandoanngt,nullif(e.chandoan,' ') chandoanrv,";
                sql += "to_char(a.ngay,'dd/mm/yyyy hh24:mi') ngayvao,to_char(e.ngay,'dd/mm/yyyy hh24:mi') ngayra,nullif(f.ten,' ') ttlucrv,h.tenbv,b.mabv,a.ngay, bh.traituyen,(case bh.traituyen when 0 then 1 when 1 then 0 else null end) as dungtuyen";
                sql += " from " + m.user + ".benhandt a inner join " + m.user + ".noigioithieu b on a.maql=b.maql inner join " + m.user + ".btdbn c on a.mabn=c.mabn left join " + m.user + ".quanhe d on a.maql=d.maql left join " + m.user + ".xuatvien e on a.maql=e.maql left join " + m.user + ".ttxk f on e.ttlucrv=f.ma left join " + m.user + ".lienhe g on a.maql=g.maql inner join " + m.user + ".dstt h on b.mabv=h.mabv inner join " + m.user + ".btdpxa i on c.maphuongxa=i.maphuongxa inner join " + m.user + ".btdquan j on c.maqu=j.maqu inner join " + m.user + ".btdtt k on c.matt=k.matt ";
                sql += " left join " + m.user + ".bhyt bh on bh.maql=a.maql ";
                sql += " where ";
                sql += " b.mabv<>'" + m.Mabv + "'";
                ds   = m.get_data(sql + sql_exp);
                sender.ReportProgress(90, "Hoàn tất.");
                break;
            }

            case 1:     //Ngoai trú
            {
                sql  = "select a.mabn,nullif(a.soluutru,' ') soluutru,c.hoten,substr(g.tuoivao,1,3)||decode(substr(g.tuoivao,4,1),0,'TU',decode(substr(g.tuoivao,4,1),1,'TH',decode(substr(g.tuoivao,4,1),2,'NG','GI'))) as tuoivao,case when c.phai =0 then 'NAM' else 'NỮ' end gioitinh,";
                sql += "nullif(c.sonha,' ') sonha,nullif(c.thon,' ') thon,i.tenpxa,j.tenquan,k.tentt,c.cholam ,";
                sql += "nullif(d.quanhe,' ')||' '||nullif(d.hoten,' ') as quanhe,b.chandoan chandoanngt,nullif(a.chandoan,' ') chandoanrv,";
                sql += "to_char(a.ngay,'dd/mm/yyyy hh24:mi') ngayvao,to_char(a.ngayrv,'dd/mm/yyyy hh24:mi') ngayra,nullif(f.ten,' ') ttlucrv,h.tenbv,b.mabv,a.ngay,bh.traituyen,(case bh.traituyen when 0 then 1 when 1 then 0 else null end) as dungtuyen";
                sql += " from " + m.user + ".benhanngtr a inner join " + m.user + ".noigioithieu b on a.maql=b.maql inner join " + m.user + ".btdbn c on a.mabn=c.mabn left join " + m.user + ".quanhe d on a.maql=d.maql left join " + m.user + ".ttxk f on a.ttlucrv=f.ma left join " + m.user + ".lienhe g on a.maql=g.maql inner join " + m.user + ".dstt h on b.mabv=h.mabv inner join " + m.user + ".btdpxa i on c.maphuongxa=i.maphuongxa inner join " + m.user + ".btdquan j on c.maqu=j.maqu inner join " + m.user + ".btdtt k on c.matt=k.matt ";
                sql += " left join  " + m.user + ".bhyt bh on bh.maql=a.maql ";
                sql += " where ";
                sql += " b.mabv<>'" + m.Mabv + "'";

                ds = m.get_data(sql + sql_exp);
                sender.ReportProgress(90, "Hoàn tất.");


                //  ds.Merge(m.get_data_mmyy(sql + sql_exp, tu.Text, den.Text, false));
                break;
            }

            case 2:    // Phòng khám
            {
                sql  = "select a.mabn,c.hoten,substr(g.tuoivao,1,3)||decode(substr(g.tuoivao,4,1),0,'TU',decode(substr(g.tuoivao,4,1),1,'TH',decode(substr(g.tuoivao,4,1),2,'NG','GI'))) as tuoivao,case when c.phai =0 then 'NAM' else 'NỮ' end gioitinh,";
                sql += "nullif(c.sonha,' ') sonha,nullif(c.thon,' ') thon,i.tenpxa,j.tenquan,k.tentt,c.cholam ,";
                sql += "nullif(d.quanhe,' ')||' '||nullif(d.hoten,' ') as quanhe,b.chandoan chandoanngt,nullif(a.chandoan,' ') chandoanrv,";
                sql += "to_char(a.ngay,'dd/mm/yyyy hh24:mi') ngayvao,to_char(a.ngay,'dd/mm/yyyy hh24:mi') ngayra,nullif(f.ten,' ') ttlucrv,h.tenbv,b.mabv,a.ngay,bh.traituyen,(case bh.traituyen when 0 then 1 when 1 then 0 else null end) as dungtuyen";
                sql += " from xxx.benhanpk a inner join xxx.noigioithieu b on a.maql=b.maql inner join " + m.user + ".btdbn c on a.mabn=c.mabn left join " + m.user + ".quanhe d on a.maql=d.maql left join " + m.user + ".ttxk f on a.ttlucrv=f.ma left join " + m.user + ".lienhe g on a.maql=g.maql inner join " + m.user + ".dstt h on b.mabv=h.mabv inner join " + m.user + ".btdpxa i on c.maphuongxa=i.maphuongxa inner join " + m.user + ".btdquan j on c.maqu=j.maqu inner join " + m.user + ".btdtt k on c.matt=k.matt ";
                sql += " left join  xxx.bhyt bh on bh.maql=a.maql ";
                sql += " where ";
                sql += " b.mabv<>'" + m.Mabv + "'";
                ds   = m.get_data_mmyy(sql + sql_exp, agr.TuNgay, agr.DenNgay, false);
                sender.ReportProgress(90, "Hoàn tất.");
                break;
            }

            case 3:     // tất cả
            {
                sql  = "(select distinct a.mabn,c.hoten,substr(g.tuoivao,1,3)||decode(substr(g.tuoivao,4,1),0,'TU',decode(substr(g.tuoivao,4,1),1,'TH',decode(substr(g.tuoivao,4,1),2,'NG','GI'))) as tuoivao,case when c.phai =0 then 'NAM' else 'NỮ' end gioitinh,";
                sql += "nullif(c.sonha,' ') sonha,nullif(c.thon,' ') thon,i.tenpxa,j.tenquan,k.tentt,c.cholam ,";
                sql += "nullif(d.quanhe,' ')||' '||nullif(d.hoten,' ') as quanhe,b.chandoan chandoanngt,nullif(a.chandoan,' ') chandoanrv,";
                sql += "to_char(a.ngay,'dd/mm/yyyy hh24:mi') ngayvao,to_char(a.ngay,'dd/mm/yyyy hh24:mi') ngayra,nullif(f.ten,' ') ttlucrv,h.tenbv,b.mabv,a.ngay,bh.traituyen,(case bh.traituyen when 0 then 1 when 1 then 0 else null end) as dungtuyen,varchar 'Phòng Khám' as loai";
                sql += " from xxx.benhanpk a inner join xxx.noigioithieu b on a.maql=b.maql inner join " + m.user + ".btdbn c on a.mabn=c.mabn left join " + m.user + ".quanhe d on a.maql=d.maql left join " + m.user + ".ttxk f on a.ttlucrv=f.ma left join " + m.user + ".lienhe g on a.maql=g.maql inner join " + m.user + ".dstt h on b.mabv=h.mabv inner join " + m.user + ".btdpxa i on c.maphuongxa=i.maphuongxa inner join " + m.user + ".btdquan j on c.maqu=j.maqu inner join " + m.user + ".btdtt k on c.matt=k.matt ";
                sql += " left join  xxx.bhyt bh on bh.maql=a.maql ";
                sql += " where ";
                sql += " b.mabv<>'" + m.Mabv + "'" + sql_exp;
                sql += ") union all ";
                sql += "select distinct a.mabn,c.hoten,substr(g.tuoivao,1,3)||decode(substr(g.tuoivao,4,1),0,'TU',decode(substr(g.tuoivao,4,1),1,'TH',decode(substr(g.tuoivao,4,1),2,'NG','GI'))) as tuoivao,case when c.phai =0 then 'NAM' else 'NỮ' end gioitinh,";
                sql += "nullif(c.sonha,' ') sonha,nullif(c.thon,' ') thon,i.tenpxa,j.tenquan,k.tentt,c.cholam ,";
                sql += "nullif(d.quanhe,' ')||' '||nullif(d.hoten,' ') as quanhe,b.chandoan chandoanngt,nullif(a.chandoan,' ') chandoanrv,";
                sql += "to_char(a.ngay,'dd/mm/yyyy hh24:mi') ngayvao,to_char(a.ngay,'dd/mm/yyyy hh24:mi') ngayra,nullif(f.ten,' ') ttlucrv,h.tenbv,b.mabv,a.ngay,bh.traituyen,(case bh.traituyen when 0 then 1 when 1 then 0 else null end) as dungtuyen,varchar 'Phòng Cấp Cứu' as loai";
                sql += " from xxx.benhancc a inner join xxx.noigioithieu b on a.maql=b.maql inner join " + m.user + ".btdbn c on a.mabn=c.mabn left join " + m.user + ".quanhe d on a.maql=d.maql left join " + m.user + ".ttxk f on a.ttlucrv=f.ma left join " + m.user + ".lienhe g on a.maql=g.maql inner join " + m.user + ".dstt h on b.mabv=h.mabv inner join " + m.user + ".btdpxa i on c.maphuongxa=i.maphuongxa inner join " + m.user + ".btdquan j on c.maqu=j.maqu inner join " + m.user + ".btdtt k on c.matt=k.matt ";
                sql += " left join xxx.bhyt bh on bh.maql=a.maql ";
                sql += " where ";
                sql += " b.mabv<>'" + m.Mabv + "'" + sql_exp;
                ds   = m.get_data_mmyy(sql, agr.TuNgay, agr.DenNgay, false);
                sender.ReportProgress(65);
                sql  = "(select distinct a.mabn,e.soluutru,c.hoten,substr(g.tuoivao,1,3)||decode(substr(g.tuoivao,4,1),0,'TU',decode(substr(g.tuoivao,4,1),1,'TH',decode(substr(g.tuoivao,4,1),2,'NG','GI'))) as tuoivao,case when c.phai =0 then 'NAM' else 'NỮ' end gioitinh,";
                sql += "c.sonha,c.thon,i.tenpxa,j.tenquan,k.tentt,c.cholam ,";
                sql += "d.quanhe||' '||d.hoten as quanhe,b.chandoan chandoanngt,nullif(e.chandoan,' ') chandoanrv,";
                sql += "to_char(a.ngay,'dd/mm/yyyy hh24:mi') ngayvao,to_char(e.ngay,'dd/mm/yyyy hh24:mi') ngayra,nullif(f.ten,' ') ttlucrv,h.tenbv,b.mabv,a.ngay, bh.traituyen,(case bh.traituyen when 0 then 1 when 1 then 0 else null end) as dungtuyen,varchar 'Nội trú' as loai";
                sql += " from " + m.user + ".benhandt a inner join " + m.user + ".noigioithieu b on a.maql=b.maql inner join " + m.user + ".btdbn c on a.mabn=c.mabn left join " + m.user + ".quanhe d on a.maql=d.maql left join " + m.user + ".xuatvien e on a.maql=e.maql left join " + m.user + ".ttxk f on e.ttlucrv=f.ma left join " + m.user + ".lienhe g on a.maql=g.maql inner join " + m.user + ".dstt h on b.mabv=h.mabv inner join " + m.user + ".btdpxa i on c.maphuongxa=i.maphuongxa inner join " + m.user + ".btdquan j on c.maqu=j.maqu inner join " + m.user + ".btdtt k on c.matt=k.matt ";
                sql += " left join " + m.user + ".bhyt bh on bh.maql=a.maql ";
                sql += " where ";
                sql += " b.mabv<>'" + m.Mabv + "'" + sql_exp;
                sql += ") union all ";
                sql += "select distinct a.mabn,nullif(a.soluutru,' ') soluutru,c.hoten,substr(g.tuoivao,1,3)||decode(substr(g.tuoivao,4,1),0,'TU',decode(substr(g.tuoivao,4,1),1,'TH',decode(substr(g.tuoivao,4,1),2,'NG','GI'))) as tuoivao,case when c.phai =0 then 'NAM' else 'NỮ' end gioitinh,";
                sql += "nullif(c.sonha,' ') sonha,nullif(c.thon,' ') thon,i.tenpxa,j.tenquan,k.tentt,c.cholam ,";
                sql += "nullif(d.quanhe,' ')||' '||nullif(d.hoten,' ') as quanhe,b.chandoan chandoanngt,nullif(a.chandoan,' ') chandoanrv,";
                sql += "to_char(a.ngay,'dd/mm/yyyy hh24:mi') ngayvao,to_char(a.ngayrv,'dd/mm/yyyy hh24:mi') ngayra,nullif(f.ten,' ') ttlucrv,h.tenbv,b.mabv,a.ngay,bh.traituyen,(case bh.traituyen when 0 then 1 when 1 then 0 else null end) as dungtuyen,varchar 'Ngoại trú' as loai";
                sql += " from " + m.user + ".benhanngtr a inner join " + m.user + ".noigioithieu b on a.maql=b.maql inner join " + m.user + ".btdbn c on a.mabn=c.mabn left join " + m.user + ".quanhe d on a.maql=d.maql left join " + m.user + ".ttxk f on a.ttlucrv=f.ma left join " + m.user + ".lienhe g on a.maql=g.maql inner join " + m.user + ".dstt h on b.mabv=h.mabv inner join " + m.user + ".btdpxa i on c.maphuongxa=i.maphuongxa inner join " + m.user + ".btdquan j on c.maqu=j.maqu inner join " + m.user + ".btdtt k on c.matt=k.matt ";
                sql += " left join  " + m.user + ".bhyt bh on bh.maql=a.maql ";
                sql += " where ";
                sql += " b.mabv<>'" + m.Mabv + "'" + sql_exp;

                DataSet tm = m.get_data(sql);
                sender.ReportProgress(80);
                ds.Merge(tm);
                sender.ReportProgress(90, "Hoàn tất.");
                break;
            }
            }


            //DateTime mindate=DateTime.MaxValue, maxdate=DateTime.MinValue;
            //foreach (DataRow dsr in ds.Tables[0].Rows)
            //{
            //    maxdate = DateTime.FromOADate( Math.Max( maxdate.ToOADate() , ((DateTime)dsr["ngay"]).ToOADate()));
            //    mindate = DateTime.FromOADate( Math.Min( mindate.ToOADate() , ((DateTime)dsr["ngay"]).ToOADate()));
            //}
            sender.ReportProgress(100, "Hoàn tất.");
            ParamAsynResult result = new ParamAsynResult();

            result.ds         = ds;
            result.NgayExp    = agr.NgayExp;
            result.DiaDiemExp = agr.DiaDiemExp;
            e.Result          = result;
        }