?? 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 + -