感觉分类查询好烦,因为需要传递查询条件给其它报表作为生成条件。
//-----------------------------------------------------------
//在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查询语句的条件各不相同,所以写起来很烦!