📄 qmhdl.cpp
字号:
//---------------------------------------------------------------------------
#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 + -