Variant ee,ss;
    ee=CreateOleObject("excel.application");
    ee.OlePropertySet("Visible",true);
    ee.OlePropertyGet("Workbooks").OleProcedure("Add");
    ss=ee.OlePropertyGet("ActiveWorkbook").OlePropertyGet("Worksheets",1);
    ss.OlePropertySet("Range","A2","淮安市医疗保险大病统筹基金收支表");
    ss.OlePropertySet("Range","A4","项目");
    ss.OlePropertySet("Range","B4","月计数");
    ss.OlePropertySet("Range","B5","机关");
    ss.OlePropertySet("Range","C5","事业");
    ss.OlePropertySet("Range","D5","国有企业");
    ss.OlePropertySet("Range","E5","集体企业");
    ss.OlePropertySet("Range","F5","港澳台外资企业");
    ss.OlePropertySet("Range","G5","其它企业");
    ss.OlePropertySet("Range","H5","小计");
    ss.OlePropertySet("Range","I4","累计数");
    ss.OlePropertySet("Range","I5","机关");
    ss.OlePropertySet("Range","J5","事业");
    ss.OlePropertySet("Range","K5","国有企业");
    ss.OlePropertySet("Range","L5","集体企业");
    ss.OlePropertySet("Range","M5","港澳台外资企业");
    ss.OlePropertySet("Range","N5","其它企业");
    ss.OlePropertySet("Range","O5","小计");
    ss.OlePropertyGet("Range","B:O").OlePropertySet("NumberFormat","0.00");
    ss.OlePropertyGet("Range","A2:O2").OleProcedure("Merge");
    ss.OlePropertyGet("Range","A4:A5").OleProcedure("Merge");
    ss.OlePropertyGet("Range","B4:H4").OleProcedure("Merge");
    ss.OlePropertyGet("Range","I4:O4").OleProcedure("Merge");
    ss.OlePropertyGet("Range","A1:O5").OlePropertySet("HorizontalAlignment",-4108);
    ss.OlePropertyGet("Range","A1:O5").OlePropertySet("VerticalAlignment",-4108);
    ss.OlePropertyGet("Columns","A").OlePropertySet("ColumnWidth",30);
    ss.OlePropertyGet("Range","B:O").OlePropertySet("ColumnWidth",10);
    ss.OlePropertySet("Range","A6","一、医疗保险大病统筹基金收入");
    ss.OlePropertySet("Range","A7","  1、单位缴纳");
    ss.OlePropertySet("Range","A8","  2、在职职工个人缴纳");
    ss.OlePropertySet("Range","A9","  3、退休人员个人缴纳");
    ss.OlePropertySet("Range","A11","  4、基金利息收入");
    ss.OlePropertySet("Range","A12","  5、财政补贴收入");
    ss.OlePropertySet("Range","A13","  6、异地转移收入");
    ss.OlePropertySet("Range","A14","  7、基金其他收入");
    ss.OlePropertySet("Range","A15","   其中:滞纳金收入");
    ss.OlePropertySet("Range","A16","  8、上级补助收入");
    ss.OlePropertySet("Range","A17","  9、下级上解收入");
    ss.OlePropertySet("Range","A19","二、上年结余");
    ss.OlePropertySet("Range","A20","       医疗保险基金");
    ss.OlePropertySet("Range","A23","三、医疗保险大病统筹基金支出");
    ss.OlePropertySet("Range","A24","  1、在职职工医疗费支出");
    ss.OlePropertySet("Range","A25","    (1)住院费支出");
    ss.OlePropertySet("Range","A26","    (2)门诊费支出");
    ss.OlePropertySet("Range","A27","  2、退休人员医疗费支出");
    ss.OlePropertySet("Range","A28","    (1)住院费支出");
    ss.OlePropertySet("Range","A29","    (2)门诊费支出");
    ss.OlePropertySet("Range","A30","  3、异地转移支出");
    ss.OlePropertySet("Range","A31","  4、基金其他支出");
    ss.OlePropertySet("Range","A32","  5、上解上级支出");
    ss.OlePropertySet("Range","A33","  6、补助下级支出");
    ss.OlePropertySet("Range","A35","四、累计结余");
    ss.OlePropertySet("Range","A36","       医疗保险基金");
    ss.OlePropertyGet("Range","A4:O36").
        OlePropertyGet("Borders").OlePropertySet("LineStyle",1);
    //----------------------------------------
    Query1->Close();Query1->SQL->Clear();
    Query1->SQL->Add("SELECT SUM(DBSR),SUM(CASE WHEN DBSR>DWJF.DBGRYJ THEN DWJF.DBGRYJ ELSE DBSR END),");
    Query1->SQL->Add("SUM(CASE WHEN DBSR>DWJF.DBGRYJ+DWJF.DBDWYJ THEN DWJF.DBDWYJ WHEN DBSR>DWJF.DBGRYJ THEN DBSR-DWJF.DBGRYJ ELSE 0 END) FROM DWJF ");
    Query1->SQL->Add("WHERE JFYF=:JFYF");
    Query1->SQL->Add("AND RYFL='A' AND JFLB='2'");
    Query1->ParamByName("JFYF")->AsInteger=UpDown1->Position;
    Query1->Open();
    ss.OlePropertySet("Cells",6,8,Query1->Fields->Fields[0]->AsString);
    ss.OlePropertySet("Cells",7,8,Query1->Fields->Fields[2]->AsString);
    Query1->Close();Query1->SQL->Clear();
    Query1->SQL->Add("SELECT SUM(DBSR),SUM(CASE WHEN DBSR>DWJF.DBGRYJ THEN DWJF.DBGRYJ ELSE DBSR END),");
    Query1->SQL->Add("SUM(CASE WHEN DBSR>DWJF.DBGRYJ+DWJF.DBDWYJ THEN DWJF.DBDWYJ WHEN DBSR>DWJF.DBGRYJ THEN DBSR-DWJF.DBGRYJ ELSE 0 END) FROM DWJF ");
    Query1->SQL->Add("WHERE JFYF=:JFYF");
    Query1->SQL->Add("AND RYFL='0' AND JFLB='2'");
    Query1->ParamByName("JFYF")->AsInteger=UpDown1->Position;
    Query1->Open();
    ss.OlePropertySet("Cells",8,8,Query1->Fields->Fields[1]->AsString);
    Query1->Close();Query1->SQL->Clear();
    Query1->SQL->Add("SELECT SUM(DBSR),SUM(CASE WHEN DBSR>DWJF.DBGRYJ THEN DWJF.DBGRYJ ELSE DBSR END),");
    Query1->SQL->Add("SUM(CASE WHEN DBSR>DWJF.DBGRYJ+DWJF.DBDWYJ THEN DWJF.DBDWYJ WHEN DBSR>DWJF.DBGRYJ THEN DBSR-DWJF.DBGRYJ ELSE 0 END) FROM DWJF ");
    Query1->SQL->Add("WHERE JFYF=:JFYF");
    Query1->SQL->Add("AND RYFL='2' AND JFLB='2'");
    Query1->ParamByName("JFYF")->AsInteger=UpDown1->Position;
    Query1->Open();
    ss.OlePropertySet("Cells",9,8,Query1->Fields->Fields[1]->AsString);
    Query1->Close();Query1->SQL->Clear();
    Query1->SQL->Add("SELECT SUM(DBSR),SUM(CASE WHEN DBSR>DWJF.DBGRYJ THEN DWJF.DBGRYJ ELSE DBSR END),");
    Query1->SQL->Add("SUM(CASE WHEN DBSR>DWJF.DBGRYJ+DWJF.DBDWYJ THEN DWJF.DBDWYJ WHEN DBSR>DWJF.DBGRYJ THEN DBSR-DWJF.DBGRYJ ELSE 0 END) FROM DWJF ");
    Query1->SQL->Add("WHERE JFYF<=:JFYF");
    Query1->SQL->Add("AND RYFL='A' AND JFLB='2'");
    Query1->ParamByName("JFYF")->AsInteger=UpDown1->Position;
    Query1->Open();
    ss.OlePropertySet("Cells",6,15,Query1->Fields->Fields[0]->AsString);
    ss.OlePropertySet("Cells",7,15,Query1->Fields->Fields[2]->AsString);

解决方案 »

  1.   

    Query1->Close();Query1->SQL->Clear();
        Query1->SQL->Add("SELECT SUM(DBSR),SUM(CASE WHEN DBSR>DWJF.DBGRYJ THEN DWJF.DBGRYJ ELSE DBSR END),");
        Query1->SQL->Add("SUM(CASE WHEN DBSR>DWJF.DBGRYJ+DWJF.DBDWYJ THEN DWJF.DBDWYJ WHEN DBSR>DWJF.DBGRYJ THEN DBSR-DWJF.DBGRYJ ELSE 0 END) FROM DWJF ");
        Query1->SQL->Add("WHERE JFYF<=:JFYF");
        Query1->SQL->Add("AND RYFL='0' AND JFLB='2'");
        Query1->ParamByName("JFYF")->AsInteger=UpDown1->Position;
        Query1->Open();
        ss.OlePropertySet("Cells",8,15,Query1->Fields->Fields[1]->AsString);
        Query1->Close();Query1->SQL->Clear();
        Query1->SQL->Add("SELECT SUM(DBSR),SUM(CASE WHEN DBSR>DWJF.DBGRYJ THEN DWJF.DBGRYJ ELSE DBSR END),");
        Query1->SQL->Add("SUM(CASE WHEN DBSR>DWJF.DBGRYJ+DWJF.DBDWYJ THEN DWJF.DBDWYJ WHEN DBSR>DWJF.DBGRYJ THEN DBSR-DWJF.DBGRYJ ELSE 0 END) FROM DWJF ");
        Query1->SQL->Add("WHERE JFYF<=:JFYF");
        Query1->SQL->Add("AND RYFL='2' AND JFLB='2'");
        Query1->ParamByName("JFYF")->AsInteger=UpDown1->Position;
        Query1->Open();
        ss.OlePropertySet("Cells",9,15,Query1->Fields->Fields[1]->AsString);
        for(int i=2;i<8;i++) {
            Query1->Close();Query1->SQL->Clear();
            Query1->SQL->Add("SELECT SUM(DBSR),SUM(CASE WHEN DBSR>DWJF.DBGRYJ THEN DWJF.DBGRYJ ELSE DBSR END),");
            Query1->SQL->Add("SUM(CASE WHEN DBSR>DWJF.DBGRYJ+DWJF.DBDWYJ THEN DWJF.DBDWYJ WHEN DBSR>DWJF.DBGRYJ THEN DBSR-DWJF.DBGRYJ ELSE 0 END) ");
            Query1->SQL->Add("FROM DWJF JOIN CBDW ON DWJF.DWBH=CBDW.DWBH");
            Query1->SQL->Add("WHERE DWJF.JFYF=:JFYF AND CBDW.DWXZ=:DWXZ");
            Query1->SQL->Add("AND RYFL='A' AND JFLB='2'");
            Query1->ParamByName("JFYF")->AsInteger=UpDown1->Position;
            Query1->ParamByName("DWXZ")->AsString=ss.OlePropertyGet("Cells",5,i);
            Query1->Open();
            ss.OlePropertySet("Cells",6,i,Query1->Fields->Fields[0]->AsString);
            ss.OlePropertySet("Cells",7,i,Query1->Fields->Fields[2]->AsString);
            Query1->Close();Query1->SQL->Clear();
            Query1->SQL->Add("SELECT SUM(DBSR),SUM(CASE WHEN DBSR>DWJF.DBGRYJ THEN DWJF.DBGRYJ ELSE DBSR END),");
            Query1->SQL->Add("SUM(CASE WHEN DBSR>DWJF.DBGRYJ+DWJF.DBDWYJ THEN DWJF.DBDWYJ WHEN DBSR>DWJF.DBGRYJ THEN DBSR-DWJF.DBGRYJ ELSE 0 END) ");
            Query1->SQL->Add("FROM DWJF JOIN CBDW ON DWJF.DWBH=CBDW.DWBH");
            Query1->SQL->Add("WHERE DWJF.JFYF=:JFYF AND CBDW.DWXZ=:DWXZ");
            Query1->SQL->Add("AND RYFL='0' AND JFLB='2'");
            Query1->ParamByName("JFYF")->AsInteger=UpDown1->Position;
            Query1->ParamByName("DWXZ")->AsString=ss.OlePropertyGet("Cells",5,i);
            Query1->Open();
            ss.OlePropertySet("Cells",8,i,Query1->Fields->Fields[1]->AsString);
            Query1->Close();Query1->SQL->Clear();
            Query1->SQL->Add("SELECT SUM(DBSR),SUM(CASE WHEN DBSR>DWJF.DBGRYJ THEN DWJF.DBGRYJ ELSE DBSR END),");
            Query1->SQL->Add("SUM(CASE WHEN DBSR>DWJF.DBGRYJ+DWJF.DBDWYJ THEN DWJF.DBDWYJ WHEN DBSR>DWJF.DBGRYJ THEN DBSR-DWJF.DBGRYJ ELSE 0 END) ");
            Query1->SQL->Add("FROM DWJF JOIN CBDW ON DWJF.DWBH=CBDW.DWBH");
            Query1->SQL->Add("WHERE DWJF.JFYF=:JFYF AND CBDW.DWXZ=:DWXZ");
            Query1->SQL->Add("AND RYFL='2' AND JFLB='2'");
            Query1->ParamByName("JFYF")->AsInteger=UpDown1->Position;
            Query1->ParamByName("DWXZ")->AsString=ss.OlePropertyGet("Cells",5,i);
            Query1->Open();
            ss.OlePropertySet("Cells",9,i,Query1->Fields->Fields[1]->AsString); }
        for(int i=9;i<15;i++) {
            Query1->Close();Query1->SQL->Clear();
            Query1->SQL->Add("SELECT SUM(DBSR),SUM(CASE WHEN DBSR>DWJF.DBGRYJ THEN DWJF.DBGRYJ ELSE DBSR END),");
            Query1->SQL->Add("SUM(CASE WHEN DBSR>DWJF.DBGRYJ+DWJF.DBDWYJ THEN DWJF.DBDWYJ WHEN DBSR>DWJF.DBGRYJ THEN DBSR-DWJF.DBGRYJ ELSE 0 END) ");
            Query1->SQL->Add("FROM DWJF JOIN CBDW ON DWJF.DWBH=CBDW.DWBH");
            Query1->SQL->Add("WHERE DWJF.JFYF<=:JFYF AND CBDW.DWXZ=:DWXZ");
            Query1->SQL->Add("AND RYFL='A' AND JFLB='2'");
            Query1->ParamByName("JFYF")->AsInteger=UpDown1->Position;
            Query1->ParamByName("DWXZ")->AsString=ss.OlePropertyGet("Cells",5,i);
            Query1->Open();
            ss.OlePropertySet("Cells",6,i,Query1->Fields->Fields[0]->AsString);
            ss.OlePropertySet("Cells",7,i,Query1->Fields->Fields[2]->AsString);
            Query1->Close();Query1->SQL->Clear();
            Query1->SQL->Add("SELECT SUM(DBSR),SUM(CASE WHEN DBSR>DWJF.DBGRYJ THEN DWJF.DBGRYJ ELSE DBSR END),");
            Query1->SQL->Add("SUM(CASE WHEN DBSR>DWJF.DBGRYJ+DWJF.DBDWYJ THEN DWJF.DBDWYJ WHEN DBSR>DWJF.DBGRYJ THEN DBSR-DWJF.DBGRYJ ELSE 0 END) ");
            Query1->SQL->Add("FROM DWJF JOIN CBDW ON DWJF.DWBH=CBDW.DWBH");
            Query1->SQL->Add("WHERE DWJF.JFYF<=:JFYF AND CBDW.DWXZ=:DWXZ");
            Query1->SQL->Add("AND RYFL='0' AND JFLB='2'");
            Query1->ParamByName("JFYF")->AsInteger=UpDown1->Position;
            Query1->ParamByName("DWXZ")->AsString=ss.OlePropertyGet("Cells",5,i);
            Query1->Open();
            ss.OlePropertySet("Cells",8,i,Query1->Fields->Fields[1]->AsString);
            Query1->Close();Query1->SQL->Clear();
            Query1->SQL->Add("SELECT SUM(DBSR),SUM(CASE WHEN DBSR>DWJF.DBGRYJ THEN DWJF.DBGRYJ ELSE DBSR END),");
            Query1->SQL->Add("SUM(CASE WHEN DBSR>DWJF.DBGRYJ+DWJF.DBDWYJ THEN DWJF.DBDWYJ WHEN DBSR>DWJF.DBGRYJ THEN DBSR-DWJF.DBGRYJ ELSE 0 END) ");
            Query1->SQL->Add("FROM DWJF JOIN CBDW ON DWJF.DWBH=CBDW.DWBH");
            Query1->SQL->Add("WHERE DWJF.JFYF<=:JFYF AND CBDW.DWXZ=:DWXZ");
            Query1->SQL->Add("AND RYFL='2' AND JFLB='2'");
            Query1->ParamByName("JFYF")->AsInteger=UpDown1->Position;
            Query1->ParamByName("DWXZ")->AsString=ss.OlePropertyGet("Cells",5,i);
            Query1->Open();
            ss.OlePropertySet("Cells",9,i,Query1->Fields->Fields[1]->AsString); }
        //----------------------------------------  上年结余
        Query1->Close();Query1->SQL->Clear();
        Query1->SQL->Add("SELECT SUM(DBSR) FROM DWJF ");
        Query1->SQL->Add("WHERE JFYF=0");
        Query1->SQL->Add("AND RYFL='A' AND JFLB='2'");
        Query1->Open();
        ss.OlePropertySet("Cells",20,8,Query1->Fields->Fields[0]->AsString);
        for(int i=2;i<8;i++) {
            Query1->Close();Query1->SQL->Clear();
            Query1->SQL->Add("SELECT SUM(DBSR)");
            Query1->SQL->Add("FROM DWJF JOIN CBDW ON DWJF.DWBH=CBDW.DWBH");
            Query1->SQL->Add("WHERE DWJF.JFYF=0 AND CBDW.DWXZ=:DWXZ");
            Query1->SQL->Add("AND RYFL='A' AND JFLB='2'");
            Query1->ParamByName("DWXZ")->AsString=ss.OlePropertyGet("Cells",5,i);
            Query1->Open();
            ss.OlePropertySet("Cells",20,i,Query1->Fields->Fields[0]->AsString); }
    //    for(int i=2;i<=15;i++)  ss.OlePropertySet("Cells",36,i,"=SUM(R6C"+IntToStr(i)+",R20C"+IntToStr(i)+")");
        ss=Unassigned;
        ee=Unassigned;