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

📄 qmhdl.cpp

📁 邮 电 公 司 erp源码
💻 CPP
📖 第 1 页 / 共 3 页
字号:

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#define _YW_SDERP_DLL
#include "Qmhdl.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
//**************************************
//     TsdQcsh      质检单
//**************************************
//--------------------------------------------------------------
void __fastcall TsdQcsh:: SetQcshCode(AnsiString value)
{
  if(value.IsEmpty())
   throw Exception("质检单号不能为空");
  if(value.Length()>18)
   throw Exception("质检单号长度不能大于18");
  if(value!=m_QcshCode)
  {
   m_Query->Close();
   m_Query->SQL->Clear();
   m_Query->SQL->Add("SELECT QcshCODE FROM SDQcsh WHERE QcshCode='" +value+"'");
   m_Query->Open();
   if(m_Query->RecordCount>0)
   {
    m_Query->Close();
    throw Exception("质检单号'"+value+"'已存在");
   }
   m_Query->Close();
  }
  m_QcshCode=value;
}
void __fastcall TsdQcsh:: SetQcshDate(AnsiString value)
{
  if(value.IsEmpty())
   throw Exception("质检日期不能为空");
  m_QcshDate=Validate(value);
}
void __fastcall TsdQcsh:: SetQcshType(int value)
{
  if(value<1 || value>3)
   throw Exception("质检类型只能是:1-采购收货质检,2-完成品质检,3-工序质检");
  m_QcshType=value;
}
void __fastcall TsdQcsh:: SetQcshDocCode(AnsiString value)
{
  if(value.IsEmpty())
   throw Exception("送检单号不能为空");
  if(value.Length()>18)
   throw Exception("送检单号长度不能大于18");
  m_QcshDocCode=value;
}
void __fastcall TsdQcsh:: SetQcshUser(AnsiString value)
{
  if(value.IsEmpty())
   throw Exception("质检员代码不能为空");
  if(value.Length()>18)
   throw Exception("质检员代码长度不能大于18");
  if(value!=m_QcshUser)
  {
   m_Query->Close();
   m_Query->SQL->Clear();
   m_Query->SQL->Add("SELECT QcmCode FROM SDQcm WHERE QcmCode='" +value+"'");
   m_Query->Open();
   if(m_Query->RecordCount<=0)
   {
    m_Query->Close();
    throw Exception("质检员'"+value+"'未定义");
   }
   m_Query->Close();
  }
  m_QcshUser=value;
}
void __fastcall TsdQcsh:: SetQcshCheck(int value)
{
  if(value!=0 && value!=1)
   throw Exception("审核标志只能取值0-未审核1-已审");
  m_QcshCheck=value;
}
void __fastcall TsdQcsh:: SetQcshChecker(AnsiString value)
{
    if(m_QcshCheck==1)
    {
      if(value.IsEmpty())
        throw Exception("审核员代码不能为空");
      if(value.Length()>18)
        throw Exception("审核员代码长度不能大于18");
      if(value!=m_QcshChecker)
      {
        m_Query->Close();
        m_Query->SQL->Clear();
        m_Query->SQL->Add("select Qcmcode from sdQcm where Qcmcode='"+value+"'");
        m_Query->Open();
        if(m_Query->RecordCount<=0)
        {
          m_Query->Close();
          throw Exception("审核员代码未定义");
        }
        m_Query->Close();
      }
      m_QcshChecker=value;
    }
    else
      m_QcshChecker="";
}
void __fastcall TsdQcsh:: SetQcshCheckDate(AnsiString value)
{
    if(m_QcshCheck==1)
    {
      if(value.IsEmpty())
        throw Exception("审核日期不能为空");
      m_QcshCheckDate=Validate(value);
    }
    else
      m_QcshCheckDate="";
}
void __fastcall TsdQcsh:: SetQcshSysDate(AnsiString value)
{
      m_QcshSysDate=value;
}
//---------------------------------------------------------------------------
AnsiString TsdQcsh::GetFieldValue(euQcsh sdFieldName)
{
    switch(sdFieldName)
    {
      case fiQcshCode:
           return  QcshCode;
      case fiQcshDate:
           return  QcshDate;
      case fiQcshType:
           return  QcshType;
      case fiQcshDocCode:
           return  QcshDocCode;
      case fiQcshUser:
           return  QcshUser;
      case fiQcshCheck:
           return  QcshCheck;
      case fiQcshChecker:
           return  QcshChecker;
      case fiQcshCheckDate:
           return  QcshCheckDate;
      case fiQcshSysDate:
           return  QcshSysDate;
      default:
        throw Exception("当前未定义可取值");
    }
}
//---------------------------------------------------------------------------
void TsdQcsh::SetFieldValue(euQcsh sdFieldName, AnsiString value)
{
    value=Trim(value);
    switch(sdFieldName)
    {
     case fiQcshCode:
             QcshCode=value;
           break;
     case fiQcshDate:
             QcshDate=value;
           break;
     case fiQcshType:
             QcshType=value.ToInt();
           break;
     case fiQcshDocCode:
             QcshDocCode=value;
           break;
     case fiQcshUser:
             QcshUser=value;
           break;
     case fiQcshCheck:
             QcshCheck=value.ToInt();
           break;
     case fiQcshChecker:
             QcshChecker=value;
           break;
     case fiQcshCheckDate:
             QcshCheckDate=value;
           break;
     case fiQcshSysDate:
             QcshSysDate=value;
           break;
     default:
        throw Exception("当前字段未定义可赋值");
    }
}
//---------------------------------------------------------------------------
TsdQcsh::TsdQcsh(TDataComm *DC)
                :TsdHead(DC)
{
    try
    {
        QueryString="SELECT * FROM sdQcsh";
        FilterString="";
        OrderString="QcshCode";
        EmptyValue(0);
        EmptyValue(1);
    }
    catch(Exception &e)
    {
        ShowMessage(e.Message);
    }
}
TsdQcsh::TsdQcsh()
                :TsdHead()
{
    try
    {
        QueryString="SELECT * FROM sdQcsh";
        FilterString="";
        OrderString="QcshCode";
        EmptyValue(0);
        EmptyValue(1);
    }
    catch(Exception &e)
    {
        ShowMessage(e.Message);
    }
}
//---------------------------------------------------------------------------
TsdQcsh::~TsdQcsh()
{
  try{
    for(int i=0;i<this->Count;i++)
    {
      this->LocateByIndex(i);
      this->AssignValue();
      delete m_sdQcsd;
     }

  }
  catch(...)
  {
    throw Exception("析构函数出错");
  }
}
//---------------------------------------------------------------------------
void TsdQcsh::Update()
{
    if(CurStatus==0||CurStatus==1)
        throw Exception("当前不是编辑状态,不能进行存盘操作!");
    if(m_QcshCode.IsEmpty()==true)
        throw Exception("单号不能为空!");
    if(ItemCount<=0)
        throw Exception("单没有定义明细字段");
    m_Query->Close();
    m_Query->SQL->Clear();
    AnsiString CheckSql = "select QcshCode from sdQcsh where QcshCode='";
    CheckSql += m_QcshCode;
    CheckSql += "' and QcshCheck=1";
    m_Query->SQL->Add(CheckSql);
    m_Query->Open();

    if(m_Query->RecordCount>0)
    {
        m_Query->Close();
        throw Exception("此单已审核,不能修改");
    }
    m_Query->Close();

    m_StoredProc->Close();
    switch(CurStatus)
    {
    case 2:
    case 4:
        m_StoredProc->ProcedureName="sdQcsh_Insert";
        m_StoredProc->Parameters->Clear();
        m_StoredProc->Parameters->CreateParameter("@QcshCode",ftString,pdInput,18,m_QcshCode);
        m_StoredProc->Parameters->CreateParameter("@QcshDate",ftString,pdInput,10,m_QcshDate);
        m_StoredProc->Parameters->CreateParameter("@QcshType",ftInteger,pdInput,1,m_QcshType);
        m_StoredProc->Parameters->CreateParameter("@QcshDocCode",ftString,pdInput,18,m_QcshDocCode);
        m_StoredProc->Parameters->CreateParameter("@QcshUser",ftString,pdInput,18,m_QcshUser);
        m_StoredProc->Parameters->CreateParameter("@QcshSysDate",ftString,pdOutput,30,m_QcshSysDate);

        m_StoredProc->ExecProc();
        m_QcshSysDate=m_StoredProc->Parameters->ParamValues["@QcshSysDate"];

        for(int i=0;i<ItemCount;i++)
        {
            LocateItemByIndex(i);
            if(m_sdQcsd->CurStatus==2||m_sdQcsd->CurStatus==3)
                m_sdQcsd->Update();
        }
        break;
    case 3:
        m_StoredProc->ProcedureName="sdQcsh_Update";
        m_StoredProc->Parameters->Clear();

        m_StoredProc->Parameters->CreateParameter("@W_QcshCode",ftString,pdInput,18,b_QcshCode);
        m_StoredProc->Parameters->CreateParameter("@QcshCode",ftString,pdInput,18,m_QcshCode);
        m_StoredProc->Parameters->CreateParameter("@QcshDate",ftString,pdInput,10,m_QcshDate);
        m_StoredProc->Parameters->CreateParameter("@QcshType",ftInteger,pdInput,1,m_QcshType);
        m_StoredProc->Parameters->CreateParameter("@QcshDocCode",ftString,pdInput,18,m_QcshDocCode);
        m_StoredProc->Parameters->CreateParameter("@QcshUser",ftString,pdInput,18,m_QcshUser);
        m_StoredProc->Parameters->CreateParameter("@QcshSysDate",ftString,pdOutput,30,m_QcshSysDate);

       m_StoredProc->ExecProc();
       m_QcshSysDate=m_StoredProc->Parameters->ParamValues["@QcshSysDate"];

      break;
    case 5:
    case 6:
    case 7:
        for(int i=0;i<ItemCount;i++)
          {
            LocateItemByIndex(i);
            if(m_sdQcsd->CurStatus==2||m_sdQcsd->CurStatus==3)
               m_sdQcsd->Update();
           }
        break;
    }
    m_StoredProc->Close();
    TsdQcsh *p=new TsdQcsh();
    if(CurStatus==2)
    {
        SetActionID(1);
        p->Assign(this);
        AddRecord((void *)p,p->QcshCode);
    }
    else
    {
        SetActionID(1);
        p->Assign(this);
        ChangeRecord((void *)p,p->QcshCode,this->b_QcshCode);
    }
}
//---------------------------------------------------------------------------
void TsdQcsh::Delete()
{
    if(CurStatus!=1)
        throw Exception("当前状态不能进行删除操作!");
    if(m_QcshCode.IsEmpty()==true)
        throw Exception("当前没有记录可以删除!");
    m_Query->Close();
    m_Query->SQL->Clear();
    AnsiString CheckSql = "select QcshCode from sdQcsh where QcshCode='";
    CheckSql += m_QcshCode;
    CheckSql += "' and QcshCheck=1";
    m_Query->SQL->Add(CheckSql);
    m_Query->Open();

    if(m_Query->RecordCount>0)
    {
        m_Query->Close();
        throw Exception("此单已审核,不能删除");
    }
    m_Query->Close();

    while(ItemCount>0)
       m_sdQcsd->Delete();
    m_StoredProc->Close();
    m_StoredProc->ProcedureName="sdQcsh_Delete";
    m_StoredProc->Parameters->Clear();
        m_StoredProc->Parameters->CreateParameter("@W_QcshCode",ftString,pdInput,18,b_QcshCode);
    m_StoredProc->ExecProc();
    m_StoredProc->Close();
    DeleteRecord(this->b_QcshCode);
}
//---------------------------------------------------------------------------
void TsdQcsh::AddItem()
{
    m_sdQcsd->AddNew();
    if(CurStatus!=2)
        SetActionID(5);
}
//---------------------------------------------------------------------------
void TsdQcsh::InsertItem()
{
/*  m_sdField->AddNew();
  TsdField *p=new TsdField(app,pCon);
  p->Assign(m_sdField);
  if(CurStatus==2)
    m_sdField->AddRecord((void *)p,p->GetFieldValue(fiFieldName));
  else
    m_sdField->Update();
*/
}
//---------------------------------------------------------------------------
void TsdQcsh::EditItem()
{
    if(CurStatus==1)
       {
        m_sdQcsd->Edit();
        SetActionID(6);
        }
}
//---------------------------------------------------------------------------
void TsdQcsh::DeleteItem()
{
    if(CurStatus==2||CurStatus==5)
        m_sdQcsd->DeleteRecord(m_sdQcsd->Key);
    else
        m_sdQcsd->Delete();
}
//---------------------------------------------------------------------------
void TsdQcsh::RemoveItem()
{
    if(CurStatus==2||CurStatus==5)
        m_sdQcsd->RemoveRecord(m_sdQcsd->Index);
    else
        m_sdQcsd->Delete();
}
//---------------------------------------------------------------------------
void TsdQcsh::ClearItem()
{
    int iCount;
    if(CurStatus==2)
        m_sdQcsd->ClearRecord();
    else
    {
        iCount=m_sdQcsd->Count;
        for(int i=0;i<iCount;i++)
        {
            m_sdQcsd->LocateByIndex(0);

⌨️ 快捷键说明

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