📄 bomhquery.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include "BomhQuery.h"
#include "WnQuery.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "SDEdit"
#pragma resource "*.dfm"
TfrmBomhQuery *frmBomhQuery;
//---------------------------------------------------------------------------
__fastcall TfrmBomhQuery::TfrmBomhQuery(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
: TStdBaseForm(Owner,chWnd,MidCode,WhereStr)
{
tvBomhQuery->Items->Clear();
}
//---------------------------------------------------------------------------
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=new TComResultSet(Handle,g_ClientHandle);
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=new TComResultSet(Handle,g_ClientHandle);
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(l_RsGoods->LocateByKey(WideString(t_BomhGoods))==0)
{
seBomhGoods->Text=GetGoodsValue(gtInitRs,"GoodsCode");
seBomhGoodsName->Text=GetGoodsValue(gtInitRs,"GoodsName");
tvBomhQuery->Items->Clear();
TempNode[0]=tvBomhQuery->Items->AddChild(NULL,"<" + t_BomhGoods + ">" +GetGoodsValue(gtInitRs,"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())
{
InitRsGoods(WideString(t_BomhGoods));
// l_RsGoods->LocateByKey(WideString(t_BomhGoods));
if(GetGoodsValue(gtInitRs,"GoodsFrom")=="1")
{
::MessageBox(Handle,"采购件不可以展展开子件!","错误提示",MB_OK|MB_ICONSTOP);
return;
}
tvBomhQuery->Items->Clear();
TempNode[0]=tvBomhQuery->Items->AddChild(NULL,"<" + t_BomhGoods + ">" +GetGoodsValue(gtInitRs,"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(gtInitRs,"GoodsName"));
FillTreeViewWithParent(t_BomhGoods);
TempNode[0]->Expand(true);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmBomhQuery::FormClose(TObject *Sender,
TCloseAction &Action)
{
TStdBaseForm::FormClose(Sender,Action);
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -