发新话题
打印

学习BCB6第五天:完成了月末结算功能及一些数据库汇总模块[原创]

学习BCB6第五天:完成了月末结算功能及一些数据库汇总模块[原创]

今天完成了NSMS(纳克公司库房管理系统)的月末结算与一些报表的数据汇总功能模块
现在等待财务和库房那边给出打印样张及最后需要生成的数据结果来进行下一步的编程工作。

还有一个想法是想这个系统设置功能的参数做到config数据表内,例如月末结算完后,自动在config表内做一个标识,当然也可以将这些参数做到一个文件内。目前这些功能还未实现。

==========================
月末结算代码如下:
==========================
    if(Application->MessageBox("进行月末结算,系统将会删除当月出/入库单数据,确定开始吗?","警告",4)==6)
    {

        String s1,s2,ProNO,Ins;
        String v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15;
        float sum;

        s1="Select * from import";
        ImportFrm->Query4->Close();
        ImportFrm->Query4->SQL->Clear();
        ImportFrm->Query4->SQL->Add(s1);
        ImportFrm->Query4->Open();
        ImportFrm->Query4->First();
        while(!ImportFrm->Query4->Eof)
        {//读取入库单中的产品编号并查找产品库中的相对应的相关信息
                ProNO=ImportFrm->Query4->FieldByName("产品编号"->AsString;
                s2="Select * from product where 产品编号 = '"+ ProNO + "'";
                ProductFrm->Query2->Close();
                ProductFrm->Query2->SQL->Clear();
                ProductFrm->Query2->SQL->Add(s2);
                ProductFrm->Query2->Open();
                //将相应信息写入imbalance数据表中
                v1=ProductFrm->Query2->FieldByName("产品编号"->AsString;
                v2=ProductFrm->Query2->FieldByName("产品名称"->AsString;
                v3=ProductFrm->Query2->FieldByName("产品规格")->AsString;
                v4=ProductFrm->Query2->FieldByName("计量单位")->AsString;
                v5=ProductFrm->Query2->FieldByName("供货单位")->AsString;
                v6=ImportFrm->Query4->FieldByName("入库日期")->AsString;
                v7=ProductFrm->Query2->FieldByName("入库单价")->AsString;
                v8=ImportFrm->Query4->FieldByName("入库数量")->AsString;
                v9=ProductFrm->Query2->FieldByName("入库折扣")->AsString;
                sum=StrToFloat(v7)*StrToFloat(v8)*(1-StrToFloat(v9));
                v10=FloatToStr(sum);
                v11=ProductFrm->Query2->FieldByName("销售税金")->AsString;
                v12=ImportFrm->Query4->FieldByName("备注")->AsString;
                Ins="Insert into imbalance(产品编号,产品名称,产品规格,计量单位,供货单位,入库日期,入库单价,入库数量,入库折扣,金额,税金,备注)";
                Ins=Ins + " values('"+ v1 +"','"+ v2 +"','"+ v3 +"','"+ v4 +"','"+ v5 +"','"+ v6 +"','"+ v7 +"','"+ v8 +"','"+ v9 +"','"+ v10 +"','"+ v11 +"','"+ v12 +"')";
                Query1->Close();
                Query1->SQL->Clear();
                Query1->SQL->Add(Ins);
                Query1->ExecSQL();
                //ImportFrm->Query4->Delete();
                ImportFrm->Query4->Next();
        }
        ShowData("imbalance");

        s1="Select * from export";
        ExportFrm->Query5->Close();
        ExportFrm->Query5->SQL->Clear();
        ExportFrm->Query5->SQL->Add(s1);
        ExportFrm->Query5->Open();
        ExportFrm->Query5->First();
        while(!ExportFrm->Query5->Eof)
        {//读取出库单中的产品编号并查找产品库中的相对应的相关信息
                ProNO=ExportFrm->Query5->FieldByName("商品编号")->AsString;
                s2="Select * from product where 产品编号 = '"+ ProNO + "'";
                ProductFrm->Query2->Close();
                ProductFrm->Query2->SQL->Clear();
                ProductFrm->Query2->SQL->Add(s2);
                ProductFrm->Query2->Open();
                //将相应信息写入exbalance数据表中
                v1=ProductFrm->Query2->FieldByName("产品编号")->AsString;
                v2=ProductFrm->Query2->FieldByName("产品名称")->AsString;
                v3=ProductFrm->Query2->FieldByName("供货单位")->AsString;
                v4=ExportFrm->Query5->FieldByName("出库日期")->AsString;
                v5=ExportFrm->Query5->FieldByName("购货单位")->AsString;
                v6=ExportFrm->Query5->FieldByName("出库数量")->AsString;
                v7=ProductFrm->Query2->FieldByName("入库单价")->AsString;
                v8=ProductFrm->Query2->FieldByName("入库折扣")->AsString;
                sum=StrToFloat(v6)*StrToFloat(v7)*(1-StrToFloat(v8));
                v9=FloatToStr(sum);
                v10=ProductFrm->Query2->FieldByName("销售单价")->AsString;
                sum=StrToFloat(v6)*StrToFloat(v10);
                v11=FloatToStr(sum);
                v12=ProductFrm->Query2->FieldByName("销售税金")->AsString;
                v13=ExportFrm->Query5->FieldByName("发票号")->AsString;
                v14=ExportFrm->Query5->FieldByName("凭证编号")->AsString;
                v15=ExportFrm->Query5->FieldByName("备注")->AsString;
                Ins="Insert into exbalance(商品编号,商品名称,生产单位,出库日期,购货单位,出库数量,进货单价,进货折扣,进货金额,销售单价,销售金额,税金,发票号,凭证编号,备注)";
                Ins=Ins + " values('"+ v1 +"','"+ v2 +"','"+ v3 +"','"+ v4 +"','"+ v5 +"','"+ v6 +"','"+ v7 +"','"+ v8 +"','"+ v9 +"','"+ v10 +"','"+ v11 +"','"+ v12 +"','"+ v13 +"','"+ v14 +"','"+ v15 +"')";
                Query1->Close();
                Query1->SQL->Clear();
                Query1->SQL->Add(Ins);
                Query1->ExecSQL();
                //ExportFrm->Query5->Delete();
                ExportFrm->Query5->Next();
        }
        ShowData("exbalance");

        ExportFrm->Query5->SQL->Clear();
        ExportFrm->Query5->Close();
        ImportFrm->Query4->SQL->Clear();
        ImportFrm->Query4->Close();
        ProductFrm->Query2->SQL->Clear();
        ProductFrm->Query2->Close();
    }


==========================
供货单位情况汇总表代码如下:
==========================
    if(!StoreProvider_Balanced)
    {
        String s1,s2,s3,s4,value1,value2,Provider,ProNO,Ins;
        int LastImport,ThisImport,ThisSales,ThisLeavings;
        String v1,v2,v3;
        LastImport=0;
        ThisImport=0;
        ThisSales=0;
        ThisLeavings=0;

        s1="select distinct 供货单位 from product";
        ProductFrm->Query2->Close();
        ProductFrm->Query2->SQL->Clear();
        ProductFrm->Query2->SQL->Add(s1);
        ProductFrm->Query2->Open();
        ProductFrm->Query2->First();
        while(!ProductFrm->Query2->Eof)
        {  //列表供货单位名称
                Provider=ProductFrm->Query2->FieldByName("供货单位")->AsString;
                s2="Select * from product where 供货单位 = '"+ Provider +"'";
                ClientFrm->Query3->Close();
                ClientFrm->Query3->SQL->Clear();
                ClientFrm->Query3->SQL->Add(s2);
                ClientFrm->Query3->Open();
                ClientFrm->Query3->First();
                while(!ClientFrm->Query3->Eof)
                {  //聚合单一供货方当月入库、销售及结存情况
                        ProNO=ClientFrm->Query3->FieldByName("产品编号")->AsString;
                        s3="Select sum(金额) from imbalance where 产品编号='"+ ProNO +"'";
                        ImportFrm->Query4->Close();
                        ImportFrm->Query4->SQL->Clear();
                        ImportFrm->Query4->SQL->Add(s3);
                        ImportFrm->Query4->Open();
                        value1=ImportFrm->Query4->FieldByName("Expr1000")->AsString;
                        if(value1=="")
                        {value1=0;}
                        ThisImport=ThisImport+StrToInt(value1);

                        s4="select sum(销售金额) from exbalance where 商品编号='"+ ProNO +"'";
                        ExportFrm->Query5->Close();
                        ExportFrm->Query5->SQL->Clear();
                        ExportFrm->Query5->SQL->Add(s4);
                        ExportFrm->Query5->Open();
                        value2=ExportFrm->Query5->FieldByName("Expr1000")->AsString;
                        if(value2=="")
                        {value2=0;}
                        ThisSales=ThisSales+StrToInt(value2);

                        ClientFrm->Query3->Next();
                }
                ThisLeavings=ThisImport-ThisSales;
                v1=IntToStr(ThisImport);
                v2=IntToStr(ThisSales);
                v3=IntToStr(ThisLeavings);
                Ins="insert into StoreProvider(供购单位,本期入库,本期销售,本期结存) values('"+ Provider +"','"+ v1 +"','"+ v2 +"','"+ v3 +"')";
                ClientFrm->Query3->Close();
                ClientFrm->Query3->SQL->Clear();
                ClientFrm->Query3->SQL->Add(Ins);
                ClientFrm->Query3->ExecSQL();

                ProductFrm->Query2->Next();
        }
        Query1->Close();
        Query1->SQL->Clear();
        Query1->SQL->Add("Select * from StoreProvider");
        Query1->Open();

        ExportFrm->Query5->SQL->Clear();
        ExportFrm->Query5->Close();
        ImportFrm->Query4->SQL->Clear();
        ImportFrm->Query4->Close();
        ClientFrm->Query3->SQL->Clear();
        ClientFrm->Query3->Close();
        ProductFrm->Query2->SQL->Clear();
        ProductFrm->Query2->Close();
        StoreProvider_Balanced=true;
    }
    else if(Application->MessageBox("供货单位已经汇总过,是否现在查看汇总表","提示",4)==6)
    {
        Query1->Close();
        Query1->SQL->Clear();
        Query1->SQL->Add("Select * from StoreProvider");
        Query1->Open();
    }

==========================
库房出库情况汇总表代码如下:
==========================
    if(!StoreExport_Balanced)
    {
        String s2,s5,Ins,Buyer,Sum;
        //获得购货单位唯一值
        s5="select distinct 购货单位 from exbalance";
        ExportFrm->Query5->Close();
        ExportFrm->Query5->SQL->Clear();
        ExportFrm->Query5->SQL->Add(s5);
        ExportFrm->Query5->Open();
        ExportFrm->Query5->First();
        while(!ExportFrm->Query5->Eof)
        { //获得购货单位的销售金额
                Buyer=ExportFrm->Query5->FieldByName("购货单位")->AsString;
                s2="Select sum(销售金额) from exbalance where 购货单位 = '"+ Buyer +"'";
                ProductFrm->Query2->Close();
                ProductFrm->Query2->SQL->Clear();
                ProductFrm->Query2->SQL->Add(s2);
                ProductFrm->Query2->Open();
                Sum=ProductFrm->Query2->FieldByName("Expr1000")->AsString;
                Ins="insert into StoreExport(购货单位,金额合计) values('"+ Buyer +"','"+ Sum +"')";
                ClientFrm->Query3->Close();
                ClientFrm->Query3->SQL->Clear();
                ClientFrm->Query3->SQL->Add(Ins);
                ClientFrm->Query3->ExecSQL();
                ExportFrm->Query5->Next();
        }
        Query1->Close();
        Query1->SQL->Clear();
        Query1->SQL->Add("Select * from StoreExport");
        Query1->Open();

        ExportFrm->Query5->SQL->Clear();
        ExportFrm->Query5->Close();
        ClientFrm->Query3->SQL->Clear();
        ClientFrm->Query3->Close();
        ProductFrm->Query2->SQL->Clear();
        ProductFrm->Query2->Close();
        StoreExport_Balanced=true;
    }
    else if(Application->MessageBox("纳克公司库房出库情况已经汇总过,是否现在查看汇总表","提示",4)==6)
    {
        Query1->Close();
        Query1->SQL->Clear();
        Query1->SQL->Add("Select * from StoreExport");
        Query1->Open();
    }


现在感觉面向对象的味道不够强,或许以后应该学学Java,然后改用Java来编写这个程序
现在我比较想学VC.NET
众里寻它千百DO

TOP

发新话题