⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bs_manage.cpp

📁 供销存软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        THsum->Text="";
        THprice->Text="";
        Money->Text="";
        Tsum->Text="";
        DM->ADOQ_SPinfo->Close();
}
//---------------------------------------------------------------------------

void __fastcall TbsForm::postBtnClick(TObject *Sender)
{
        DBEdit1->Enabled=false;
        DBEdit2->Enabled=false;
        DBEdit3->Enabled=false;
        DBEdit4->Enabled=false;
        DBEdit5->Enabled=false;
        //DBEdit6->Enabled=false;
        SPnum->Enabled=false;
        THsum->Enabled=false;
        THprice->Enabled=false;
        Money->Enabled=false;
        Tsum->Enabled=false;
        DBComboBox1->Enabled=false;
        addSP->Enabled=false;
        calButton->Enabled=false;
        okBtn->Enabled=false;
        noBtn->Enabled=false;
        insertBtn->Enabled=true;
        postBtn->Enabled=false;
        DM->ADOQ_RKD->FieldByName("结算人")->AsString=LoginForm->Edituser->Text;
        DM->ADOQ_RKD->Post();     //退库信息表提交

        DM->ADOQ_RKSP->Close();
        DM->ADOQ_RKSP->SQL->Clear();
        DM->ADOQ_RKSP->SQL->Add("select * from 报损商品表");
        DM->ADOQ_RKSP->Open();

        DM->ADOQ->First();
        while(!DM->ADOQ->Eof)
        {       //退库信息表提交
                DM->ADOQ_SPinfo->Close();
                DM->ADOQ_SPinfo->SQL->Clear();
                AnsiString str="select * from 商品信息表 where 编号='";
                str+=DM->ADOQ->FieldByName("商品编号")->AsString.Trim();
                str+="'";
                DM->ADOQ_SPinfo->SQL->Add(str);
                DM->ADOQ_SPinfo->Open();
                DM->ADOQ_SPinfo->Edit();
                DM->ADOQ_SPinfo->FieldByName("库存数量")->AsInteger=DM->ADOQ_SPinfo->FieldByName("库存数量")->AsInteger+DM->ADOQ->FieldByName("数量")->AsInteger;
                DM->ADOQ_SPinfo->Post();
                //退库商品表提交
                DM->ADOQ_RKSP->Insert();
                DM->ADOQ_RKSP->FieldByName("报损单编号")->Value=DM->ADOQ->FieldByName("单号")->Value;
                DM->ADOQ_RKSP->FieldByName("商品编号")->Value=DM->ADOQ->FieldByName("商品编号")->Value;
                DM->ADOQ_RKSP->FieldByName("报损数量")->Value=DM->ADOQ->FieldByName("数量")->Value;
                DM->ADOQ_RKSP->FieldByName("价格")->Value=DM->ADOQ->FieldByName("单价")->Value;
                DM->ADOQ_RKSP->FieldByName("当前库存数量")->Value=DM->ADOQ->FieldByName("当前库存数量")->Value;
                DM->ADOQ_RKSP->FieldByName("金额")->Value=DM->ADOQ->FieldByName("金额")->Value;
                DM->ADOQ_RKSP->FieldByName("单个利润")->Value=DM->ADOQ->FieldByName("单个利润")->Value;
                DM->ADOQ_RKSP->Post();

                //仓库商品表提交
                DM->ADOQ_user->Close();
                DM->ADOQ_user->SQL->Clear();
                AnsiString s="select * from 仓库商品表 where 仓库名称='";
                s+=DBComboBox1->Text;
                s+="' and ";
                s+="商品编号='";
                s+=DM->ADOQ->FieldByName("商品编号")->AsString.Trim();
                s+="'";
                DM->ADOQ_user->SQL->Add(s);
                DM->ADOQ_user->Open();
                if(DM->ADOQ_user->RecordCount==0){
                        DM->ADOQ_user->Insert();
                        DM->ADOQ_user->FieldByName("库存数量")->Value=DM->ADOQ->FieldByName("当前库存数量")->Value;
                        DM->ADOQ_user->FieldByName("商品编号")->Value=DM->ADOQ->FieldByName("商品编号")->Value;
                        DM->ADOQ_user->FieldByName("仓库名称")->Value=DBComboBox1->Text;
                        DM->ADOQ_user->FieldByName("时间")->Value=DM->ADOQ_RKD->FieldByName("报损时间")->Value;
                        DM->ADOQ_user->FieldByName("单号")->Value=DM->ADOQ_RKD->FieldByName("编号")->Value;
                        DM->ADOQ_user->Post();
                }else{
                        DM->ADOQ_user->Edit();
                        DM->ADOQ_user->FieldByName("库存数量")->Value=DM->ADOQ->FieldByName("当前库存数量")->Value;
                        DM->ADOQ_user->FieldByName("时间")->Value=DM->ADOQ_RKD->FieldByName("报损时间")->Value;
                        DM->ADOQ_user->FieldByName("单号")->Value=DM->ADOQ_RKD->FieldByName("编号")->Value;
                        DM->ADOQ_user->Post();
                }

                DM->ADOQ->Next();
        }

        
}
//---------------------------------------------------------------------------

void __fastcall TbsForm::printBtnClick(TObject *Sender)
{
       Variant Ex,Wb,Sheet,ERange,EBorders;
          try
          {
                //取报表文件*.xls的完整目录名
                AnsiString ExcelFileName = GetCurrentDir()+"\\out\\商品报损单.xls";
                if(!FileExists(ExcelFileName))
                {
                        Application->MessageBox("报表模板文件不存在,无法打开!","错误",MB_ICONSTOP|MB_OK);
                        return;
                }
                //建立Excel的Ole对象Ex
                try
                {
                        Ex = Variant::CreateObject("Excel.Application");
                }
                catch(...)
                {
                        Application->MessageBox("无法启动Excel","错误",MB_ICONSTOP|MB_OK);
                        return;
                }
                //设置Excel为不可见
                Ex.OlePropertySet("Visible",false);
                //打开指定的Excel报表文件。报表文件中最好设定只有一个Sheet。
                Ex.OlePropertyGet("WorkBooks").OleProcedure("Open",ExcelFileName.c_str());
                Wb = Ex.OlePropertyGet("ActiveWorkBook");
                Sheet=Wb.OlePropertyGet("ActiveSheet");//获得当前默认的Sheet
                //清空Excel表,这里是用循环清空到第100行。对于一般的表格已经足够了。
                AnsiString strRowTemp;
                AnsiString strRange;
                int iCols,iRows;//记录列数和行数

                /*从第三行开始,到第100行止。一般第一行是表标题,第二行是制表日期。*/
                for(iRows=3;iRows<20;iRows++)
                {
                        for (iCols = 1;iCols < 7; iCols++)
                        {
                                //清空行
                                Sheet.OlePropertyGet("Cells",iRows,iCols).OlePropertySet("Value","");
                        }
                }

                AnsiString Dnum,strPtrDate;
                Dnum="单号:"+DBText1->Caption;
                strPtrDate="报损时间:"+DBText2->Caption;

                AnsiString strData = "小刀儿2007 商品报损单";//报表标题
                //将报表标题置于第一行第一列。在此之前,应将报表文件的标题格式设定好。
                Sheet.OlePropertyGet("Cells",1,1).OlePropertySet("Value",strData.c_str());
                //将制表日期置于表格第二行的右侧。
                Sheet.OlePropertyGet("Cells",2,1).OlePropertySet("Value",Dnum.c_str());
                Sheet.OlePropertyGet("Cells",2,4).OlePropertySet("Value",strPtrDate.c_str());

                iRows = 3;//在第三行放置表格的列名
                Sheet.OlePropertyGet("Cells",iRows,1).OlePropertySet("Value","商品名称");
                Sheet.OlePropertyGet("Cells",iRows,2).OlePropertySet("Value","单位");
                Sheet.OlePropertyGet("Cells",iRows,3).OlePropertySet("Value","商品规格");
                Sheet.OlePropertyGet("Cells",iRows,4).OlePropertySet("Value","数量");
                Sheet.OlePropertyGet("Cells",iRows,5).OlePropertySet("Value","单价");
                Sheet.OlePropertyGet("Cells",iRows,6).OlePropertySet("Value","金额");
                iRows++;
                //从数据库中取数据
                DM->ADOQ->First();
                //循环取数
                while(!DM->ADOQ->Eof)
                {
                        //循环取字段的数据放到Excel表对应的行列中
                        for(iCols=1;iCols<7;iCols++)
                        {
                                strRowTemp=DM->ADOQ->Fields->Fields[iCols+1]->AsString;
                                Sheet.OlePropertyGet("Cells",iRows,iCols).OlePropertySet("Value",strRowTemp.c_str());
                        }
                        iRows++;
                        DM->ADOQ->Next();
                }//while结束
                AnsiString  str="合计金额:"+DBText4->Caption;
                Sheet.OlePropertyGet("Cells",iRows,1).OlePropertySet("Value",str.c_str());
                Ex.OlePropertySet("Visible",true);
        }//try结束
        catch(...)
        {
                Application->MessageBox("操作Excel表格失败!","错误",MB_ICONSTOP|MB_OK);
                Wb.OleProcedure("Close");
                Ex.OleFunction("Quit");
        }
}
//---------------------------------------------------------------------------

void __fastcall TbsForm::closeBtnClick(TObject *Sender)
{
        
        Close();
}
//---------------------------------------------------------------------------


//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -