supplygoodsquery.cpp

来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 542 行 · 第 1/2 页

CPP
542
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "SupplyGoodsQuery.h"
#include "commfunction.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "fpanel"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "SDTreeView"
#pragma resource "*.dfm"
TfrmSupplyGoodsQuery *frmSupplyGoodsQuery;
//---------------------------------------------------------------------------
__fastcall TfrmSupplyGoodsQuery::TfrmSupplyGoodsQuery(TComponent* Owner,HWND chWnd,TKSSet* Goods,AnsiString whereStr)
        : TForm(Owner)
{
    l_ClientHandle= chWnd;
    l_Goods=Goods;
    l_WhereStr=Trim(whereStr);//无关键字where
    //填充货位
    FillComboBox(Handle,scLoc,"select memo=LocCode+space(18-len(LocCode))+LocName,LocCode from sdloc order by LocCode","memo","LocCode");//取第二个字段值为key
    //初始化
    ClearCondition();
    RsGoodsQuery=new TComResultSet(Handle,l_ClientHandle);
    FillTreeWithPmpc();
}
//---------------------------------------------------------------------------
__fastcall TfrmSupplyGoodsQuery::~TfrmSupplyGoodsQuery()
{
   if (RsGoodsQuery) delete RsGoodsQuery;
}
//---------------------------------------------------------------------------
void __fastcall TfrmSupplyGoodsQuery::btnOKClick(TObject *Sender)
{
   AnsiString l_Goodscode;
   try
   {
     if(sgGoods->Row>0)
     { l_Goods->Clear();
       l_Goodscode = sgGoods->Cells[0][sgGoods->Row];
       l_Goods->AddNew();
       RsGoodsQuery->LocateByKey(l_Goodscode);
       AnsiString l_GoodsTName;
       TComResultSet *RsFieldsName = new TComResultSet(Handle,g_ClientHandle);
       RsFieldsName->Open( " select  top 0 * from sdgoods " ,"goodsCode" );
       for (int i=0;i<RsFieldsName->FieldCount;i++)
       {
        l_GoodsTName= RsFieldsName->Fields->Fields[i]->FieldName;
        l_Goods->FieldValues[l_GoodsTName]=RsGoodsQuery->FieldByName(l_GoodsTName);
       }
        l_Goods->Update();
        ModalResult=mrOk;
     }
     else
     {
      throw Exception("未定位物料,不能确定");
     }
   }
   __finally
   {
     if (RsFieldsName) delete RsFieldsName;
   }

}
//---------------------------------------------------------------------------
void __fastcall TfrmSupplyGoodsQuery::FillTreeWithPmpc()
{

     TTreeNode *TempNode[7];
     int mLevel;
     TComResultSet *RsPmpc = new TComResultSet(Handle,l_ClientHandle);
     tvGoods->Items->Clear();
     TempNode[0]=tvGoods->Items->Add(NULL,"所有的物料");//根节点
     TempNode[0]->ImageIndex =5;
     TempNode[0]->SelectedIndex =5;
     TempNode[0]->StateIndex =-1;

     RsPmpc->Open("select PmpcCode,PmpcName,PmpcLevel,PmpcEnd from sdPmpc order by PmpcCode,PmPcLevel","");
     RsPmpc->MoveFirst();
     while( RsPmpc->Eof ==0 )
     {
        mLevel=RsPmpc->FieldByName("PmpcLevel").ToInt();
        TempNode[mLevel] = tvGoods->Items->AddChild(TempNode[mLevel-1],"(" + RsPmpc->FieldByName("PmpcCode") + ")" +RsPmpc->FieldByName("PmpcName"));
        if(RsPmpc->FieldByName("PmpcEnd")=="1")//叶子节点
        {
         TempNode[mLevel]->ImageIndex=-1;//非选中时图像
         TempNode[mLevel]->SelectedIndex=0;//选中时图像
         TempNode[mLevel]->StateIndex = 4;//展开时图像属性
        }
        else //非叶子节点
        {
         TempNode[mLevel]->ImageIndex =-1;
         TempNode[mLevel]->SelectedIndex = 0;
         TempNode[mLevel]->StateIndex = 3;//非展开时图像属性
        }
        TempNode[mLevel]->Text= "(" + RsPmpc->FieldByName("PmpcCode") + ")"+RsPmpc->FieldByName("PmpcName");
        RsPmpc->MoveNext();
     }
     RsPmpc->Close();
     TempNode[0]->Expand(false);
     delete RsPmpc;
}

//---------------------------------------------------------------------------
void __fastcall TfrmSupplyGoodsQuery::btnClearClick(TObject *Sender)
{
  ClearCondition();
}
//---------------------------------------------------------------------------
void __fastcall TfrmSupplyGoodsQuery::ClearCondition()
{
  FloatPanel1->ParentColor=true;
  sgGoods->RowCount=1;
  btnOK->Enabled=false;
  edtLocate->Text="";
  lbQueryCount->Caption="0";
  et_FopQty->Caption ="0";
  scLoc->ItemIndex=-1;
    chkType1->Checked=false;
    chkType2->Checked=false;
    chkType3->Checked=false;
    chkType4->Checked=false;
    chkType5->Checked=false;
    chkType6->Checked=false;
    chkType7->Checked=false;
    chkType8->Checked=false;
    chkType9->Checked=false;
    chkType10->Checked=false;
    chkType11->Checked=false;
    chkType12->Checked=false;
    chkType13->Checked=false;
    chkType14->Checked=false;
  RadioGroup1->ItemIndex=0;
  plExtend->Visible=false;
  btnQuery->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmSupplyGoodsQuery::btnQueryClick(TObject *Sender)
{
   btnOK->Enabled=true;
   FillGridWithData();
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmSupplyGoodsQuery::GetQueryStr()
{
  //获取查询语句
  AnsiString sSQL,sSelect,sWhere,sLocWhere,sTemp,sTreeNodeWhere,sOrder;
  sSQL="";
  sSelect="";
  sWhere="";
  sLocWhere="";
  sTemp="";
  sTreeNodeWhere="";
  sOrder="";
  sSelect="select * from sdpgd,sdgoods where goodscode=pgdgoods";
  //货位sLocWhere
  if(scLoc->ItemIndex>-1&&scLoc->Items->Count>0)
  {
    sLocWhere=" goodscode in (select distinct lggoodscode from sdlg where lgLocCode= "+QuotedStr(scLoc->ItemData[1])+") ";
  }
  //扩展,货物类型,按顺序sTemp
  sTemp="";
      if(chkType1->Checked)
        if(sTemp == "")
          sTemp=" (GoodsType=1";
        //else
        //  sTemp=sTemp+" or GoodsType=1";
      if(chkType2->Checked)
        if(sTemp == "")
          sTemp=" (GoodsType=2";
        else
          sTemp=sTemp+" and GoodsType=2";
      if(chkType3->Checked)
        if(sTemp == "")
          sTemp=" (GoodsType=3";
        else
          sTemp=sTemp+" and GoodsType=3";
      if(chkType4->Checked)
        if(sTemp == "")
          sTemp=" (GoodsType=4";
        else
          sTemp=sTemp+" and GoodsType=4";
      if(chkType5->Checked)
        if(sTemp == "")
          sTemp=" (GoodsType=5";
        else
          sTemp=sTemp+" and GoodsType=5";
      if(chkType6->Checked)
        if(sTemp == "")
          sTemp=" (GoodsType=6";
        else
          sTemp=sTemp+" and GoodsType=6";
      if(chkType7->Checked)
        if(sTemp == "")
          sTemp=" (GoodsType=7";
        else
          sTemp=sTemp+" and GoodsType=7";
      if(chkType8->Checked)
        if(sTemp == "")
          sTemp=" (GoodsType=8";
        else
          sTemp=sTemp+" and GoodsType=8";
      if(chkType9->Checked)
        if(sTemp == "")
          sTemp=" (GoodsType=9";
        else
          sTemp=sTemp+" and GoodsType=9";
      //货物来源
      if(chkType10->Checked)
        if(sTemp == "")
          sTemp=" (GoodsFrom=1";
        else
          sTemp=sTemp+" and GoodsFrom=1";
      if(chkType11->Checked)
        if(sTemp == "")
          sTemp=" (GoodsFrom=2";
        else
          sTemp=sTemp+" and GoodsFrom=2";
      //需批次管理
      if(chkType12->Checked)
        if(sTemp == "")
          sTemp="  (GoodsBatch=1";
        else
          sTemp=sTemp+" and GoodsBatch=1";
      //需单独管理
      if(chkType13->Checked)
        if(sTemp == "")
          sTemp="  (GoodsSingle=1";
        else
          sTemp=sTemp+" and GoodsSingle=1";
      //可销售
      if(chkType14->Checked)
        if(sTemp == "")
          sTemp="  (GoodsSale=1 ";
        else
          sTemp=sTemp+" and GoodsSale=1";
    if(sTemp!="")
      sTemp=sTemp+")";
  // treeview---sTreeNodeWhere
  if (!l_TvSelect.IsEmpty())
  {
    sTreeNodeWhere=" (goodscode like  '"+l_TvSelect+"%' or GoodsPmpcCode like '"+l_TvSelect+"%') ";
  }
  //sWhere条件按顺序用and 连接
  if(Trim(l_WhereStr).IsEmpty()&&Trim(sLocWhere).IsEmpty()&&Trim(sTemp).IsEmpty()&&Trim(sTreeNodeWhere).IsEmpty())
  { //全部条件为空时才为空
    sWhere=" ";
  }
  else
  {
    sWhere=" ";
    if(!Trim(l_WhereStr).IsEmpty())
      sWhere=" where "+l_WhereStr;
    if(!Trim(sLocWhere).IsEmpty())
      if(!Trim(sWhere).IsEmpty())
        sWhere=sWhere+" and "+sLocWhere;
      else
        sWhere=" where "+sLocWhere;
   if(!Trim(sTemp).IsEmpty())
      if(!Trim(sWhere).IsEmpty())
        sWhere=sWhere+" and "+sTemp;
      else
        sWhere=" where "+sTemp;
   if(!Trim(sTreeNodeWhere).IsEmpty())
      if(!Trim(sWhere).IsEmpty())
        sWhere=sWhere+" and "+sTreeNodeWhere;
      else
        sWhere=" where "+sTreeNodeWhere;

⌨️ 快捷键说明

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