发新话题
打印

学习BCB第七天:完成分类查询功能

学习BCB第七天:完成分类查询功能

感觉分类查询好烦,因为需要传递查询条件给其它报表作为生成条件。

//-----------------------------------------------------------
        //在unit1.h中定义了三个全局变量QueryYearCycle,QueryMonthCycle,QueryQuarterCycle,QueryStartDate,QueryEndDate;
        bool QueryTag;
        QueryTag=true;

        //按年查询
        if(YearRadio->Checked==true)
        {
                if(YearCBox->Text==""
                {
                        Application->MessageBoxA("请选择待查询的具体年份","提示",0);
                        QueryTag=false;
                }
                else
                {
                        QueryYearCycle=YearCBox->Text;
                }
        }
        //按月查询
        else if(MonthRadio->Checked==true)
        {
                if(YearCBox->Text=="" || MonthCBox->Text==""
                {
                        Application->MessageBoxA("使用按月份查询,请选择待查询的年月份","提示",0);
                        QueryTag=false;
                }
                else
                {
                        QueryYearCycle=YearCBox->Text;
                        QueryMonthCycle=MonthCBox->Text;
                }
        }
        //按季度查询
        else if(QuarterRadio->Checked==true)
        {
                if(QuarterCBox->Text==""
                {
                        Application->MessageBoxA("使用按季度查询,请选择待查询的年季度","提示",0);
                        QueryTag=false;
                }
                else
                {
                        QueryYearCycle=YearCBox->Text;
                        QueryQuarterCycle=QuarterCBox->Text;
                }
        }
        //自定义查询方式
        else if(CustomRadio->Checked==true)
        {
                if(StartDate->Text=="" || EndDate->Text=="")
                {
                        Application->MessageBoxA("使用自定义查询方式,请输入起始和结束日期","提示",0);
                        QueryTag=false;
                }
                else
                {
                        QueryStartDate=StartDate->Text;
                        QueryEndDate=EndDate->Text;
                }
        }
        else
        {
                Application->MessageBoxA("请指定查询方式","提示",0);
                QueryTag=false;
        }

        if(QueryTag==true)
        {
                //判断各输入框是否为空,是的话则赋0初值,此步是为下一步格式转化时使用
                if(YearCBox->Text==""){QueryYearCycle="0";}
                if(MonthCBox->Text==""){QueryMonthCycle="0";}
                if(QuarterCBox->Text==""){QueryQuarterCycle="0";}
                if(StartDate->Text==""){QueryStartDate="0";}
                if(EndDate->Text==""){QueryEndDate="0";}
                Close();
        }
//以上代码完全获得分类查询条件的信息
//-----------------------------------------------------------


//销售流水报表
void __fastcall TMainFrm::N44Click(TObject *Sender)
{
    String s1,Ins;
    String num,v1,v2,v3,v4,v5,v6,v7,v8;
    String StartYear1,EndYear1,StartMonth1,EndMonth1,StartDate1,EndDate1;
    bool QueryTag;
    num="1";
    QueryTag=true;

    if(CycleFrm->YearRadio->Checked==false && CycleFrm->MonthRadio->Checked==false && CycleFrm->QuarterRadio->Checked==false && CycleFrm->CustomRadio->Checked==false)
    {
        if(Application->MessageBox("你没有指定任何查询方式,未指定查询条件系统将进行全库查询,是否继续?","提示",4)==6)
        {
                s1="Select * from exbalance";
        }
        else
        {
                //本次查询退出,同时弹出查询方式窗体供用户选择
                QueryTag=false;
                CycleFrm->Show();
        }
    }
    else
    {
        //传递查询条件
        StartYear1=QueryYearCycle;
        EndYear1=IntToStr(StrToInt(QueryYearCycle)+1);
        StartMonth1=QueryYearCycle + "-" + ""+ QueryMonthCycle +"";
        EndMonth1=QueryYearCycle + "-" + ""+ IntToStr(StrToInt(QueryMonthCycle)+1) +"";
        StartDate1=QueryStartDate;
        EndDate1=QueryEndDate;
        if(CycleFrm->YearRadio->Checked==true)
        {
                s1="Select * from exbalance where 出库日期 > '"+ StartYear1 +"' and 出库日期 < '"+ EndYear1 +"'";
        }
        else if(CycleFrm->MonthRadio->Checked==true)
        {
                s1="Select * from exbalance where 出库日期 > '"+ StartMonth1 +"' and 出库日期 < '"+ EndMonth1 +"'";
        }
        else if(CycleFrm->CustomRadio->Checked==true)
        {
                s1="Select * from exbalance where 出库日期 >= '"+ StartDate1 +"' and 出库日期 YearRadio->Checked==false && CycleFrm->MonthRadio->Checked==false && CycleFrm->QuarterRadio->Checked==false && CycleFrm->CustomRadio->Checked==false)
        {
                if(Application->MessageBox("你没有指定任何查询方式,未指定查询条件系统将进行全库查询,是否继续?","提示",4)==6)
                {
                        s1="select distinct 供货单位 from exbalance";
                }
                else
                {
                        //本次查询退出,同时弹出查询方式窗体供用户选择
                        QueryTag=false;
                        CycleFrm->Show();
                }
        }
        else
        {
                //传递查询条件
                StartYear1=QueryYearCycle;
                EndYear1=IntToStr(StrToInt(QueryYearCycle)+1);
                StartMonth1=QueryYearCycle + "-" + ""+ QueryMonthCycle +"";
                EndMonth1=QueryYearCycle + "-" + ""+ IntToStr(StrToInt(QueryMonthCycle)+1) +"";
                StartDate1=QueryStartDate;
                EndDate1=QueryEndDate;
                if(CycleFrm->YearRadio->Checked==true)
                {
                        s1="select distinct 供货单位 from exbalance where 出库日期 > '"+ StartYear1 +"' and 出库日期 < '"+ EndYear1 +"'";
                }
                else if(CycleFrm->MonthRadio->Checked==true)
                {
                        s1="select distinct 供货单位 from exbalance where 出库日期 > '"+ StartMonth1 +"' and 出库日期 < '"+ EndMonth1 +"'";
                }
                else if(CycleFrm->CustomRadio->Checked==true)
                {
                        s1="select distinct 供货单位 from exbalance where 出库日期 >= '"+ StartDate1 +"' and 出库日期 ExportQuery->Close();
                DataModule1->ExportQuery->SQL->Clear();
                DataModule1->ExportQuery->SQL->Add(s1);
                DataModule1->ExportQuery->Open();
                DataModule1->ExportQuery->First();
                while(!DataModule1->ExportQuery->Eof)
                {
                        Provider=DataModule1->ExportQuery->FieldByName("供货单位")->AsString;

                        //传递查询条件
                        if(CycleFrm->YearRadio->Checked==true)
                        {
                        s2="select sum(销售金额) from exbalance where 供货单位='" + Provider + "' and 出库日期 > '"+ StartYear1 +"' and 出库日期 < '"+ EndYear1 +"'";
                        s3="select sum(应付金额) from exbalance where 供货单位='" + Provider + "' and 出库日期 > '"+ StartYear1 +"' and 出库日期 < '"+ EndYear1 +"'";
                        s4="select sum(折扣金额) from exbalance where 供货单位='" + Provider + "' and 出库日期 > '"+ StartYear1 +"' and 出库日期 < '"+ EndYear1 +"'";
                        }
                        else if(CycleFrm->MonthRadio->Checked==true)
                        {
                        s2="select sum(销售金额) from exbalance where 供货单位='" + Provider + "' and 出库日期 > '"+ StartMonth1 +"' and 出库日期 < '"+ EndMonth1 +"'";
                        s3="select sum(应付金额) from exbalance where 供货单位='" + Provider + "' and 出库日期 > '"+ StartMonth1 +"' and 出库日期 < '"+ EndMonth1 +"'";
                        s4="select sum(折扣金额) from exbalance where 供货单位='" + Provider + "' and 出库日期 > '"+ StartMonth1 +"' and 出库日期 < '"+ EndMonth1 +"'";
                        }
                        else if(CycleFrm->CustomRadio->Checked==true)
                        {
                        s2="select sum(销售金额) from exbalance where 供货单位='" + Provider + "' and 出库日期 >= '"+ StartDate1 +"' and 出库日期 = '"+ StartDate1 +"' and 出库日期 = '"+ StartDate1 +"' and 出库日期 ImportQuery->Close();
                        DataModule1->ImportQuery->SQL->Clear();
                        DataModule1->ImportQuery->SQL->Add(s2);
                        DataModule1->ImportQuery->Open();
                        v1=DataModule1->ImportQuery->FieldByName("Expr1000")->AsString;

                        //获得应付金额
                        DataModule1->ImportQuery->Close();
                        DataModule1->ImportQuery->SQL->Clear();
                        DataModule1->ImportQuery->SQL->Add(s3);
                        DataModule1->ImportQuery->Open();
                        v2=DataModule1->ImportQuery->FieldByName("Expr1000")->AsString;

                        //获得扣除金额
                        DataModule1->ImportQuery->Close();
                        DataModule1->ImportQuery->SQL->Clear();
                        DataModule1->ImportQuery->SQL->Add(s4);
                        DataModule1->ImportQuery->Open();
                        v3=DataModule1->ImportQuery->FieldByName("Expr1000")->AsString;

                        Ins="Insert into StoreSalesBalAll values('" + Num + "','" + Provider + "','" + v1 + "','" + v2 + "','" + v3 + "')";
                        DataModule1->ImportQuery->Close();
                        DataModule1->ImportQuery->SQL->Clear();
                        DataModule1->ImportQuery->SQL->Add(Ins);
                        DataModule1->ImportQuery->ExecSQL();

                        Num=IntToStr(StrToInt(Num)+1);
                        DataModule1->ExportQuery->Next();
                }
                ShowData("StoreSalesBalAll");
        }
}
//---------------------------------------------------------------------------


同理可以应用于其它报表结算,但由于SQL查询语句的条件各不相同,所以写起来很烦!
众里寻它千百DO

TOP

不难

TOP

不难

TOP

我只发了一次。。怎么出来两?

TOP

不知道,可能程序还有问题吧!也可能系统在提交的时候,IE自动涮新了一次!
众里寻它千百DO

TOP

怎么就这个贴子出问题?
刚才SaveReAnnounce.asp超时。:?
众里寻它千百DO

TOP

刚才替换了SaveAnnounce.asp和SaveReAnnounce.asp,现在应该正常了
唉,昨天闹了半天,原来就是SP1和0519版的区别,倒!
众里寻它千百DO

TOP

发新话题