📄 rainfunction.cpp
字号:
// RainFunction1.cpp: implementation of the CRainFunction class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "源程序.h"
#include "RainFunction.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
extern _ConnectionPtr cnn;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CRainFunction::CRainFunction()
{
}
CRainFunction::~CRainFunction()
{
}
/*主要功能:
根据数据表中记录情况自动生成指定格式的编号。
参数:
TableName
sLate:生成的编号前两位的标志内容。
nFlg:决定编码方式,如果为1 ,编码为标志位加流水号码如 SP00000001;
如果为2 则为日期时间编码 如 RK031224-000001;
缺省值为1.
*/
CString CRainFunction::AutoNumber(CString TableName,CString sLater,int nflg)
{
CTime _time,_CurrentTime;
CString MaxNumber,_sDay,_sYear,_sMonth,NewNumber,ReturnNumber,sSQL;
int _Day,_Year,_Month;
_RecordsetPtr AutoNumber_Rst;
AutoNumber_Rst.CreateInstance(__uuidof(Recordset));
::CoInitialize(NULL);
_variant_t value;
if(nflg==1)
{
sSQL.Format("SELECT MAX(编号) as 最大编号 FROM %s",TableName);
AutoNumber_Rst = cnn->Execute((_bstr_t)sSQL,NULL,adCmdText);
value=AutoNumber_Rst->GetCollect("最大编号");
if(value.vt==VT_NULL)
{
ReturnNumber.Format("%s00000001",sLater);
}
else
{
MaxNumber=(char*)(_bstr_t)value;
MaxNumber=MaxNumber.Mid(3);
NewNumber.Format("%d",atoi(MaxNumber)+1);
ReturnNumber.Format("%s%s",sLater,this->Padl(NewNumber,8,"0"));
}
}
else
{
_time=_CurrentTime.GetCurrentTime();
_Year=_time.GetYear();
_Month=_time.GetMonth();
_Day=_time.GetDay();
_sDay.Format("%d",_Day);
_sDay=this->Padl(_sDay,2,"0");
_sMonth.Format("%d",_Month);
_sMonth=this->Padl(_sMonth,2,"0");
_sYear.Format("%d",_Year);
_sYear=_sYear.Mid(2);
sSQL.Format("SELECT MAX(票号) as 最大编号 FROM %s",TableName);
AutoNumber_Rst = cnn->Execute((_bstr_t)sSQL,NULL,adCmdText);
if(AutoNumber_Rst->_EOF)
{
ReturnNumber.Format("%s%s%s%s-000001 ",sLater,_sYear,_sMonth,_sDay);
goto retu;
}
value=AutoNumber_Rst->GetCollect("最大编号");//取出最大编号
if(value.vt==VT_NULL)
{
ReturnNumber.Format("%s%s%s%s-000001 ",sLater,_sYear,_sMonth,_sDay);
}
else
{
CString sOldDate,sNewDate;
sOldDate=(char*)(_bstr_t)value;
sOldDate=sOldDate.Mid(2,6);
sNewDate.Format("%s%s%s",_sYear,_sMonth,_sDay);
if(sOldDate==sNewDate)
{
MaxNumber.Format((char*)(_bstr_t)value);
MaxNumber=MaxNumber.Mid(9);
NewNumber.Format("%d",atoi(MaxNumber)+1);
ReturnNumber.Format("%s%s%s%s-%s",sLater,_sYear,_sMonth,_sDay,this->Padl(NewNumber,6,"0"));
}
else
{
ReturnNumber.Format("%s%s%s%s-000001 ",sLater,_sYear,_sMonth,_sDay);
}
}
}
retu: AutoNumber_Rst->Close();
return ReturnNumber;
}
/*主要功能:
通过字段返回数值编号。
参数:
TableName:指定要进行查询的数据表的名称 。
field:指定字段名称。
value: 指定字段的值。*/
int CRainFunction::NumberTOName(CString TableName, CString field,CString value)
{
_RecordsetPtr NumberTOName_rst;
CString cSQL;
_bstr_t val;
int backnumber=0;
NumberTOName_rst.CreateInstance(__uuidof(Recordset));
cSQL.Format("SELECT * FROM %s WHERE %s='%s'",TableName,field,value);
NumberTOName_rst=cnn->Execute((_bstr_t)cSQL,NULL,adCmdText);
if(NumberTOName_rst->_EOF)
goto end;
else
{
val=NumberTOName_rst->GetCollect("编号");
backnumber=atoi((char*)(_bstr_t)val);
}
end: NumberTOName_rst->Close();
return backnumber;
}
/*主要功能:
通过字段返回字符编号或通过字符编号返回指定字段。
参数:
TableName:指定要进行查询的数据表的名称 。
field:指定字段名称 。
value: 指定字段的值。
nflg: 标志通过字段返回字符编号还是通过字符编号返回字段。
nflg=1时返回前者;nflg<>1返回后者。*/
CString CRainFunction::NumberTOName(CString TableName, CString Returnfield,CString field,CString value,int nflg)
{
_RecordsetPtr NumberTOName_rst2;
CString cSQL,backnumber;
_bstr_t val;
NumberTOName_rst2.CreateInstance(__uuidof(Recordset));
cSQL.Format("SELECT * FROM %s WHERE %s='%s'",TableName,field,value);
NumberTOName_rst2=cnn->Execute((_bstr_t)cSQL,NULL,adCmdText);
if(NumberTOName_rst2->_EOF)
backnumber.Format("WRONG");
else
{
if(nflg==1)
{
val=NumberTOName_rst2->GetCollect("编号");
}
else
{
val=NumberTOName_rst2->GetCollect((_variant_t)Returnfield);
}
backnumber.Format((char*)(_bstr_t)val);
}
NumberTOName_rst2->Close();
return backnumber;
}
/*主要功能:
通过数值编号返回指定字段。
参数:
TableName:指定要进行查询的数据表的名称 。
Number:指定数值型编号。
field: 指定返回的字段名。*/
CString CRainFunction::NumberTOName(CString TableName,int Number,CString field)
{
_RecordsetPtr NumberTOName_rst3;
CString cSQL,backnumber="WRONG";
_bstr_t val;
NumberTOName_rst3.CreateInstance(__uuidof(Recordset));
cSQL.Format("SELECT * FROM %s WHERE 编号=%d",TableName,Number);
NumberTOName_rst3=cnn->Execute((_bstr_t)cSQL,NULL,adCmdText);
if(NumberTOName_rst3->_EOF)
backnumber.Format("WRONG");
else
{
val=NumberTOName_rst3->GetCollect((_variant_t)field);
backnumber.Format((char*)(_bstr_t)val);
}
NumberTOName_rst3->Close();
return backnumber;
}
/*主要功能:
返回指定字符串的拼音简码。
参数:
String:要获得拼音简码的字符串。
注意:
如果输入英文字符。请使用全角或输入一个半角后输入一个控格*/
CString CRainFunction::CharToLetterCode(CString string)
{
unsigned short i; //无符号短整型
CString value,ReturnValue;
char chr[3];
BYTE bHeight;
BYTE bLow;
for(int m=0;m<=string.GetLength()-1;m=m+2)
{
if(m%2!=0)
{
if(m<string.GetLength()-1)
m=m+1;
}
chr[0]=string.GetAt(m);
if((((BYTE)chr[0]>=0x20&&(BYTE)chr[0]<=0x80)||(BYTE)chr[0]==0xbf))
{
int StringLength=string.GetLength();
if(m+1<StringLength)
{
chr[1]=string.GetAt(m+1);
if(chr[1]<0)
{
chr[2]=0;
bHeight=chr[1];
bLow=chr[0];
i=bHeight+bLow*256;
value.Format("%s","K");
}
else
{
chr[1]=0;
chr[2]=0;
value.Format("");
m++;
}
}
else
{
chr[1]=0;
chr[2]=0;
value.Format("");
m++;
}
}
else
{
chr[1]=string.GetAt(m+1);
chr[2]=0;
bHeight=chr[1];
bLow=chr[0];
i=bHeight+bLow*256;
if(i < (unsigned short)'啊')
value.Format("%s ",chr);
if( i>= (unsigned short)'啊'&& i<(unsigned short)'芭')
value.Format("A");
if( i>= (unsigned short)'芭'&& i<(unsigned short)'擦')
value.Format("B");
if( i>= (unsigned short)'擦'&& i<(unsigned short)'搭')
value.Format("C");
if( i>= (unsigned short)'搭'&& i<(unsigned short)'蛾')
value.Format("D");
if( i>= (unsigned short)'蛾'&& i<(unsigned short)'发')
value.Format("E");
if( i>= (unsigned short)'发'&& i<(unsigned short)'噶')
value.Format("F");
if( i>= (unsigned short)'噶'&& i<(unsigned short)'哈')
value.Format("G");
if( i>= (unsigned short)'哈'&& i<(unsigned short)'击')
value.Format("H");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -