📄 bomhquery.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include "BomhQuery.h"
#include "GoodsQuery.h"
#include "WnQuery.h"
#include "Commfunction.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "SDEdit"
#pragma resource "*.dfm"
TfrmBomhQuery *frmBomhQuery;
//---------------------------------------------------------------------------
__fastcall TfrmBomhQuery::TfrmBomhQuery(TComponent* Owner)
: TStdBaseForm(Owner)
{
tvBomhQuery->Items->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TfrmBomhQuery::OpenGoodsQuery(AnsiString SqlStr)
{
if(SqlStr.IsEmpty())
throw Exception("SQL语句不能为空");
Application->ProcessMessages();
TfrmGoodsQuery *FGoodsQuery=new TfrmGoodsQuery(this,m_QueryStatus,0,SqlStr);
FGoodsQuery->ShowModal();
Application->ProcessMessages();
}
//---------------------------------------------------------------------------
void __fastcall TfrmBomhQuery::seBomhGoodsButtonClick(TObject *Sender)
{
AnsiString SqlStr;
SqlStr="007[产品编码][产品名称][来源][类型][版本号][型号][计量单位]";
SqlStr+="Select GoodsCode,GoodsName,case GoodsFrom when 1 then '采购件' when 2 then '制造件' end,case goodstype when 1 then '成品' when 2 then '半成品' when 3 then '原材料' when 4 then '零件' when 5 then '备用件' when 6 then '工具' when 7 then '费用件' when 8 then '虚拟件' when 9 then '在流件' end, GoodsVer,GoodsModel,GoodsUnitCode from sdGoods where GoodsCancel=0 order by GoodsCode";
TfrmWnQuery *p;
try
{
StartWaitForm("正在查询,请稍候...");
p=new TfrmWnQuery(this,"产品数据查询",SqlStr);
}
__finally
{
EndWaitForm();
}
if(p->ShowModal()==mrOk)
{
seBomhGoods->Text=p->ColData[1];
seBomhGoodsName->Text=p->ColData[2];
}
delete p;
}
//---------------------------------------------------------------------------
void __fastcall TfrmBomhQuery::FillTreeViewWithChild(AnsiString t_Code)
{
TComResultSet *RsQuery;
RsQuery=NewResultSet();
TTreeNode *LastNode;
AnsiString sSQL=AnsiString("select BomdGoods,GoodsName,GoodsFrom from sdBomd,sdGoods where GoodsCode=BomdGoods and BomdPGoods='"+t_Code+"'");
RsQuery->Open(sSQL,"");
RsQuery->MoveFirst();
LastNode=TempNode[0];
while(RsQuery->Eof == 0)
{
for(int i=0;i<tvBomhQuery->Items->Count;i++)
{
AnsiString c;
//取关键字
c = tvBomhQuery->Items->Item[i]->Text;
c = c.SubString(2,c.AnsiPos(">")-2);
if(t_Code == c)
{
LastNode = tvBomhQuery->Items->Item[i];
break;
}
}
tvBomhQuery->Items->AddChild(LastNode,"<" + RsQuery->FieldByName("BomdGoods") + ">" +RsQuery->FieldByName("GoodsName"));
if(RsQuery->FieldByName("GoodsFrom")==2)
FillTreeViewWithChild(RsQuery->FieldByName("BomdGoods"));
RsQuery->MoveNext();
}
RsQuery->Close();
delete RsQuery;
}
//---------------------------------------------------------------------------
void __fastcall TfrmBomhQuery::FillTreeViewWithParent(AnsiString t_Code)
{
TComResultSet *RsQuery;
RsQuery=NewResultSet();
TTreeNode *LastNode;
AnsiString sSQL=AnsiString("select BomdPGoods,GoodsName from sdBomd,sdGoods where GoodsCode=BomdGoods and BomdGoods='"+t_Code+"'");
RsQuery->Open(sSQL,"");
RsQuery->MoveFirst();
LastNode=TempNode[0];
while(RsQuery->Eof == 0)
{
for(int i=0;i<tvBomhQuery->Items->Count;i++)
{
AnsiString c;
//取关键字
c = tvBomhQuery->Items->Item[i]->Text;
c = c.SubString(2,c.AnsiPos(">")-2);
if(t_Code == c)
{
LastNode = tvBomhQuery->Items->Item[i];
break;
}
}
tvBomhQuery->Items->AddChild(LastNode,"<" + RsQuery->FieldByName("BomdPGoods") + ">" +RsQuery->FieldByName("GoodsName"));
FillTreeViewWithParent(RsQuery->FieldByName("BomdPGoods"));
RsQuery->MoveNext();
}
RsQuery->Close();
delete RsQuery;
}
//---------------------------------------------------------------------------
void __fastcall TfrmBomhQuery::seBomhGoodsKeyDown(TObject *Sender,
WORD &Key, TShiftState Shift)
{
if(Key==13)
{
AnsiString t_BomhGoods=seBomhGoods->Text;
if(t_BomhGoods.IsEmpty())
{
::MessageBox(Handle,"录入的货物编码不能为空!","错误提示",MB_OK|MB_ICONSTOP);
return;
}
if(!t_BomhGoods.IsEmpty())
{
if(g_sdRsGoods->LocateByKey(WideString(t_BomhGoods))==0)
{
seBomhGoods->Text=GetGoodsValue("GoodsCode");
seBomhGoodsName->Text=GetGoodsValue("GoodsName");
tvBomhQuery->Items->Clear();
TempNode[0]=tvBomhQuery->Items->AddChild(NULL,"<" + t_BomhGoods + ">" +GetGoodsValue("GoodsName"));
}
else{
AnsiString tempS="录入的货物编码:'"+t_BomhGoods+"'不存在!";
::MessageBox(Handle,tempS.c_str(),"错误提示",MB_OK|MB_ICONSTOP);
seBomhGoodsName->Text="";
seBomhGoods->SetFocus();
}
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmBomhQuery::bbChildClick(TObject *Sender)
{
AnsiString t_BomhGoods=seBomhGoods->Text;
if(t_BomhGoods.IsEmpty())
{
::MessageBox(Handle,"录入的货物编码不能为空!","错误提示",MB_OK|MB_ICONSTOP);
return;
}
if(!t_BomhGoods.IsEmpty())
{
g_sdRsGoods->LocateByKey(WideString(t_BomhGoods));
if(GetGoodsValue("GoodsFrom")=="1")
{
::MessageBox(Handle,"采购件不可以展展开子件!","错误提示",MB_OK|MB_ICONSTOP);
return;
}
tvBomhQuery->Items->Clear();
TempNode[0]=tvBomhQuery->Items->AddChild(NULL,"<" + t_BomhGoods + ">" +GetGoodsValue("GoodsName"));
FillTreeViewWithChild(t_BomhGoods);
TempNode[0]->Expand(true);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmBomhQuery::bbParentClick(TObject *Sender)
{
AnsiString t_BomhGoods=seBomhGoods->Text;
if(t_BomhGoods.IsEmpty())
{
::MessageBox(Handle,"录入的货物编码不能为空!","错误提示",MB_OK|MB_ICONSTOP);
return;
}
if(!t_BomhGoods.IsEmpty())
{
tvBomhQuery->Items->Clear();
TempNode[0]=tvBomhQuery->Items->AddChild(NULL,"<" + t_BomhGoods + ">" +GetGoodsValue("GoodsName"));
FillTreeViewWithParent(t_BomhGoods);
TempNode[0]->Expand(true);
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -