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

📄 bomhquery.cpp

📁 速达开源ERP系统
💻 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 + -