📄 hfcjzc.cpp
字号:
if(dba_connect==DBA_FALSE){
sLock.Lock();
if(pDatabase.IsOpen())
pDatabase.Close();
cjdata_flag=CJDATA_NO;
try{
if(pDatabase.Open( _T( "XTCJ170" ), FALSE, FALSE, _T( "ODBC;UID=xt170;PWD=VCplus170" ))==FALSE){
TRACE("连接数据库失败");
dba_connect=DBA_FALSE;
//continue;
}
else{
dba_connect=DBA_TRUE;
}
}
catch(CDBException* pEx)
{
TRACE("连接数据库失败");
dba_connect=DBA_FALSE;
pEx->Delete();
//continue;
}
catch(CMemoryException* pEx)
{
TRACE("连接数据库失败");
dba_connect=DBA_FALSE;
pEx->Delete();
//continue;
}
sLock.Unlock();
//pCuijiaoSet.Close();
}
if(dbawrite_connect==DBA_FALSE){
sWritelock.Lock();
if(pWritebase.IsOpen())
pWritebase.Close();
try{
if(pWritebase.Open( _T( "XTCJ170" ), FALSE, FALSE, _T( "ODBC;UID=xt170;PWD=VCplus170" ))==FALSE){
TRACE("连接数据库失败");
dbawrite_connect=DBA_FALSE;
//continue;
}
else{
dbawrite_connect=DBA_TRUE;
}
}
catch(CDBException* pEx)
{
TRACE("连接数据库失败");
dbawrite_connect=DBA_FALSE;
pEx->Delete();
//continue;
}
catch(CMemoryException* pEx)
{
TRACE("连接数据库失败");
dbawrite_connect=DBA_FALSE;
pEx->Delete();
//continue;
}
sWritelock.Unlock();
}
}
if((cjdata_flag==CJDATA_NO)&&(dba_connect==DBA_TRUE)){
sLock.Lock();
if(pCuijiaoSet.IsOpen())
pCuijiaoSet.Close();
try{
if(pCuijiaoSet.Open( CRecordset::forwardOnly , _T(cuijiaoSQL))==0){
pCuijiaoSet.Close();
cjdata_flag=CJDATA_NO;
//continue;
}
else{
if(pCuijiaoSet.GetRecordCount()==0){
pCuijiaoSet.Close();
cjdata_flag=CJDATA_NO;
}
else{
pCuijiaoSet.Move(lcuijiaocurrent);
cjdata_flag=CJDATA_YES;
}
}
}
catch(CDBException* e){
dba_connect=DBA_FALSE;
cjdata_flag=CJDATA_NO;
e->Delete();
//continue;
}
catch(CMemoryException* e){
dba_connect=DBA_FALSE;
cjdata_flag=CJDATA_NO;
e->Delete();
//continue;
}
sLock.Unlock();
}
}
return (0);
}
/***************************************************************
* 名称:UINT RecordData(LPVOID pParam)
* 功能:记录数据库日志
***************************************************************/
UINT RecordData(LPVOID pParam)
{
int channel;
TCB * tcb;
char InsertSQL[INSERTSQL_LENGTH];
char UpdateSQL[UPDATESQL_LENGTH];
while(1){
::WaitForSingleObject(pRecordData.m_hObject, INFINITE);
tcb=(TCB *)pParam;
channel=tcb->chdevno;
if(stopdata==STOPTRUE){
//AfxMessageBox("Stop the recorddata thread");
break;
}
if(dbawrite_connect==DBA_TRUE) {
sWritelock.Lock();
try{
sprintf(InsertSQL, "insert into t_data_cjlog(hth,num,cj_money,cj_starttime,cj_endtime) values(\'%s\',\'%s\',\'%s\',TO_DATE(\'%s\', \'YYYY/MM/DD HH24:MI:SS\'),TO_DATE(\'%s\',\'YYYY/MM/DD HH24:MI:SS\'))",
teleinfo[channel].hth,teleinfo[channel].num,teleinfo[channel].cuijiao,teleinfo[channel].qssj_time,teleinfo[channel].zzsj_time);
sprintf(UpdateSQL, "update t_data_cuijiao set cjcount=%d, cjmonth=\'%s\' where hth=\'%s\'",
teleinfo[channel].cjcount,teleinfo[channel].cjmonth,teleinfo[channel].hth);
if(pWritebase.BeginTrans()){
pWritebase.ExecuteSQL(_T(InsertSQL));
pWritebase.ExecuteSQL(_T(UpdateSQL));
if(pWritebase.CommitTrans()) {
TRACE("Transaction Commited");
dxinfo[channel].chdevzt=CHDEVZT_G;
}
else
{
pWritebase.Rollback();
dxinfo[channel].chdevzt=CHDEVZT_H;
}
}
else{
dxinfo[channel].chdevzt=CHDEVZT_H;
}
}
catch(CDBException* e){
dbawrite_connect=DBA_FALSE;
e->Delete();
//continue;
}
catch(CMemoryException* e){
dbawrite_connect=DBA_FALSE;
e->Delete();
//continue;
}
sWritelock.Unlock();
}
if(sr_putevt(dxinfo[channel].chdev,TDX_PLAY,sizeof(DX_IOTT),&dxinfo[channel].iott_cjvalue,0)==-1){
//AfxMessageBox("putevt error");
}
}
return(0);
}
/************************************************************
* 名称:void Init_data()
* 功能:初始化数据库的函数
***********************************************************/
void Init_data()
{
CString szcbcount;
CString szmaxcount;
CString szmaxcountflag;
CString szmaxringtime;
CString szbohaotime;
CString szcjtimeflag;
CString szstartmonth;
CString szendmonth;
CString szstartday;
CString szendday;
CString szstarthour;
CString szendhour;
CString szstartminute;
CString szendminute;
CString szport;
CString szowner;
CString szused;
char ls_tmparg[10];
char ls_i[10];
char ls_port[10];
char cjtimeSQL[200];
int i;
int channel;
char errormsg[100];
try{
if(pDatabase.Open( _T( "XTCJ170" ), FALSE, FALSE, _T( "ODBC;UID=xt170;PWD=VCplus170" ))==FALSE){
WinPrintf("连接数据库失败");
exit(1);
}
if(pWritebase.Open( _T( "XTCJ170" ), FALSE, FALSE, _T( "ODBC;UID=xt170;PWD=VCplus170" ))==FALSE){
WinPrintf("连接数据库write失败");
exit(1);
}
}
catch(CDBException* pEx)
{
WinPrintf("连接数据库失败");
pEx->Delete();
exit(1);
}
catch(CMemoryException* pEx)
{
WinPrintf("连接数据库失败");
pEx->Delete();
exit(1);
}
//WinPrintf("db opened ok");
if((pDatabase.IsOpen()==FALSE)||(pWritebase.IsOpen()==FALSE)) {
WinPrintf("db is not open");
exit(1);
}
if((pDatabase.CanUpdate()==FALSE)||(pWritebase.CanUpdate()==FALSE)) {
WinPrintf("db cann't update");
exit(1);
}
if((pDatabase.CanTransact()==FALSE)||(pWritebase.CanTransact()==FALSE)) {
WinPrintf("Transact cann't do");
exit(1);
}
dba_connect=DBA_TRUE;
dbawrite_connect=DBA_TRUE;
//打开催缴记录集
try{
if(pCuijiaoSet.Open( CRecordset::forwardOnly , _T(cuijiaoSQL))==0){
//if(pTestSet.Open( CRecordset::dynaset , _T(cuijiaoSQL))==0){
pCuijiaoSet.Close();
//pTestSet.Close();
cjdata_flag=CJDATA_NO;
}
else{
cjdata_flag=CJDATA_YES;
}
}
catch(CDBException* e){
//WinPrintf("连接数据库失败");
strcpy(errormsg, "数据库错误:");
strcat(errormsg, e->m_strError);
AfxMessageBox(errormsg, MB_ICONEXCLAMATION );
e->Delete();
exit(1);
}
catch(CMemoryException* e){
WinPrintf("连接数据库失败");
e->Delete();
exit(1);
}
long count=pCuijiaoSet.GetRecordCount();
if(count==0){
pCuijiaoSet.Close();
cjdata_flag=CJDATA_NO;
}
else
{
cjdata_flag=CJDATA_YES;
}
//读取参数表,并对各参数赋值pCjadminSet
try{
if(pCjadminSet.Open( CRecordset::forwardOnly , _T(cjadminSQL))==0){
pCjadminSet.Close();
cjarg.cb_count=1;
cjarg.max_count=3;
cjarg.maxcount_flag=1;
cjarg.ringtime=40;
cjarg.bohao_time=1000;
}
}
catch(CDBException* e){
WinPrintf("连接数据库失败");
e->Delete();
exit(1);
}
catch(CMemoryException* e){
WinPrintf("连接数据库失败");
e->Delete();
exit(1);
}
if(pCjadminSet.GetRecordCount()==0){
pCjadminSet.Close();
cjarg.cb_count=1;
cjarg.max_count=3;
cjarg.maxcount_flag=1;
cjarg.ringtime=40;
cjarg.bohao_time=1000;
}
if(pCjadminSet.IsOpen()){
try{
pCjadminSet.GetFieldValue( _T(cb_count) , szcbcount);
if(szcbcount.IsEmpty())
cjarg.cb_count=1;
else{
sprintf(ls_tmparg,szcbcount);
cjarg.cb_count=atoi(ls_tmparg);
}
pCjadminSet.GetFieldValue( _T(max_count) , szmaxcount);
if(szmaxcount.IsEmpty())
cjarg.max_count=3;
else{
sprintf(ls_tmparg,szmaxcount);
cjarg.max_count=atoi(ls_tmparg);
}
pCjadminSet.GetFieldValue( _T(maxcount_flag) , szmaxcountflag);
if(szmaxcountflag.IsEmpty())
cjarg.maxcount_flag=1;
else{
sprintf(ls_tmparg,szmaxcountflag);
cjarg.maxcount_flag=atoi(ls_tmparg);
}
pCjadminSet.GetFieldValue( _T(max_ringtime) , szmaxringtime);
if(szmaxringtime.IsEmpty())
cjarg.ringtime=40;
else{
sprintf(ls_tmparg,szmaxringtime);
cjarg.ringtime=atoi(ls_tmparg);
}
pCjadminSet.GetFieldValue( _T(bohao_time) , szbohaotime);
if(szbohaotime.IsEmpty())
cjarg.bohao_time=1000;
else{
sprintf(ls_tmparg,szbohaotime);
cjarg.bohao_time=atoi(ls_tmparg);
}
}
catch(CDBException* e){
WinPrintf("连接数据库失败");
e->Delete();
exit(1);
}
catch(CMemoryException* e){
WinPrintf("连接数据库失败");
e->Delete();
exit(1);
}
pCjadminSet.Close();
}
//读取参数表,并对各参数赋值pCjtimeSet
for(i=1;i<=3;i++){
itoa(i,ls_i,10);
sprintf(cjtimeSQL, "select cjtimeflag, start_month, end_month, start_day, end_day, start_hour, end_hour, start_minute, end_minute from t_data_cjtime where serial=\'%s\'",ls_i);
try{
if(pCjtimeSet.Open( CRecordset::forwardOnly , _T(cjtimeSQL))==FALSE){
pCjtimeSet.Close();
switch(i){
case 1:
cjarg.cjtime_one=1;
break;
case 2:
cjarg.cjtime_two=0;
break;
case 3:
cjarg.cjtime_three=0;
break;
}
cjarg.cjtime[i-1].start_month=1;
cjarg.cjtime[i-1].end_month=12;
cjarg.cjtime[i-1].start_day=1;
cjarg.cjtime[i-1].end_day=31;
cjarg.cjtime[i-1].start_hour=0;
cjarg.cjtime[i-1].end_hour=23;
cjarg.cjtime[i-1].start_minute=0;
cjarg.cjtime[i-1].end_minute=59;
continue;
}
}
catch(CDBException* e){
//WinPrintf("连接数据库失败");
strcpy(errormsg, "数据库错误:");
strcat(errormsg, e->m_strError);
AfxMessageBox(errormsg, MB_ICONEXCLAMATION );
e->Delete();
exit(1);
}
catch(CMemoryException* e){
WinPrintf("连接数据库失败");
e->Delete();
exit(1);
}
if(pCjtimeSet.GetRecordCount()==0){
pCjtimeSet.Close();
switch(i){
case 1:
cjarg.cjtime_one=1;
break;
case 2:
cjarg.cjtime_two=0;
break;
case 3:
cjarg.cjtime_three=0;
break;
}
cjarg.cjtime[i-1].start_month=1;
cjarg.cjtime[i-1].end_month=12;
cjarg.cjtime[i-1].start_day=1;
cjarg.cjtime[i-1].end_day=31;
cjarg.cjtime[i-1].start_hour=0;
cjarg.cjtime[i-1].end_hour=23;
cjarg.cjtime[i-1].start_minute=0;
cjarg.cjtime[i-1].end_minute=59;
continue;
}
try{
pCjtimeSet.GetFieldValue( _T(cjtimeflag) , szcjtimeflag);
if(szcjtimeflag.IsEmpty()){
switch(i){
case 1:
cjarg.cjtime_one=1;
break;
case 2:
cjarg.cjtime_two=0;
break;
case 3:
cjarg.cjtime_three=0;
break;
}
}
else{
switch(i){
case 1:
sprintf(ls_tmparg,szcjtimeflag);
cjarg.cjtime_one=atoi(ls_tmparg);
break;
case 2:
sprintf(ls_tmparg,szcjtimeflag);
cjarg.cjtime_two=atoi(ls_tmparg);
break;
case 3:
sprintf(ls_tmparg,szcjtimeflag);
cjarg.cjtime_three=atoi(ls_tmparg);
break;
}
}
pCjtimeSet.GetFieldValue( _T(start_month) , szstartmonth);
if(szstartmonth.IsEmpty())
cjarg.cjtime[
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -