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

📄 rainfunction.cpp

📁 用VISUAL C++设计的客户资源管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -