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 + -
显示快捷键?