📄 monitor.cpp
字号:
if(pControl !=NULL)
pControl->SetTextBuf(szBuf);
}
ShowOneImage(te->m_RInImage,NULL);//显示入口图象
ShowOneImage(te->m_ROutImage,NULL);//显示出口图象
}
//显示正在外出停车资料
void ShowCurParkOut(TMonitorFrame *te,PARKREC *t)
{
TADOQuery *pQuery;
USERDATA User;
int n,nCardNo,nHolderNo;
char szBuf[100];
nCardNo = t->nCardNo;
nHolderNo = t->nHolderNo;
ZeroMemory(&User,sizeof(User));
if(nHolderNo!=0){//非临时用户,则查找车主资料
wsprintf(szBuf,"HOLDERNO=\'%s\'",nHolderNo);
pQuery = (TADOQuery *)GetOtherQuery();//用OtherADOQuery元件查询一个表中记录
n=QueryOneADOTable(pQuery,GetUserTableName(),szBuf,NULL);
if(n>0){
ReadUserRecord(pQuery,&User);
User.pPhoto = GetFieldBlobOnTable(pQuery,GetCarPhotoFieldName());
}
}
te->m_UserNamePanel->Caption=t->szUserName;
te->m_CarTypePanel->Caption=t->szCarType;
te->m_CarTagPanel->Caption=t->szCarTag;
te->m_CarColorPanel->Caption=t->szCarColor;
GetUserTypeText(szBuf,User.nUserType);//获取用户类型名称文本
te->m_UserTypePanel->Caption=szBuf;
sprintf(szBuf,"%-9.2f",User.fMoney);
te->m_MoneyPanel->Caption=szBuf;
GetDWORDDateText(szBuf,User.nBeginDate);
te->m_BeginDatePanel->Caption=szBuf; //结束日期
GetDWORDDateText(szBuf,User.nEndDate);
te->m_EndDatePanel->Caption=szBuf; //开始日期
GetRoadwayNameText(szBuf,t->nInRoadNo);//获取进入车道名称文本
te->m_InRoadPanel->Caption=szBuf;
GetRoadwayNameText(szBuf,t->nOutRoadNo);//获取外出车道名称文本
te->m_OutRoadPanel->Caption=szBuf;
DWORDToYMDHMStr(szBuf,t->nInDate,t->nInTime);//长整数转化为"YYYY-MM-DD HH:MM"格式串
te->m_InTimePanel->Caption=szBuf; //进入时间
DWORDToYMDHMStr(szBuf,t->nOutDate,t->nOutTime);//长整数转化为"YYYY-MM-DD HH:MM"格式串
te->m_OutTimePanel->Caption=szBuf; //外出时间
GetNumberText(szBuf,nCardNo);
te->m_CardNoPanel->Caption=szBuf;
sprintf(szBuf,"%8.2f",t->fParkPrice);
te->m_ParkPricePanel->Caption=szBuf;
te->m_ManaulPanel->Caption=GetManualText(t);
ShowOneImage(te->m_InImage,t->pInPhoto);//显示入口图象
ShowOneImage(te->m_OutImage,t->pOutPhoto);//显示出口图象
ShowOneImage(te->m_CarImage,User.pPhoto);//显示车辆图象
DeleteBlobData(User.pPhoto);
}
//检查人工比对记录
int CheckManaulParkrec(TMonitorFrame *te)
{
void *pHead,*pCur;
PARKREC *pParkrec;
int nIndex;
if(te->m_nManual){ //正在人工比对
nIndex = te->m_MonitorPageControl->ActivePageIndex;
if(nIndex!=0)//确定监控页面
te->m_MonitorPageControl->ActivePageIndex=0;
return(FALSE);
}
pHead = GetManualParkrecList();
if(LookCount(pHead)<=0)return(FALSE); //没有外出车辆
pCur = GetDotOnTList(pHead,0);
pParkrec = LookParkrec(pCur);
ShowCurParkOut(te,pParkrec);//显示正在外出停车资料
if(GetParkManPhotoFlag(pParkrec) ||
GetParkManPhotoFlag(pParkrec)){//需要人工比对
te->m_nManual = TRUE;
te->m_OkBut->Enabled = TRUE;
te->m_CancelBut->Enabled = TRUE;
nIndex = te->m_MonitorPageControl->ActivePageIndex;
if(nIndex!=0)//确定监控页面
te->m_MonitorPageControl->ActivePageIndex=0;
}
else //不须比对,则删除链上的第0个PARKREC节点
DelParkrecDotOnTList(pHead,0);
return(TRUE);
}
//获取比对内容
char *GetManualText(PARKREC *pParkrec)
{
static char *pszText[]={"请确认车辆交费, 和进出车辆图片!",
"请比对确认进出车辆图片!"
"请确认车辆交费!",
"合法车辆,不须比对确认."};
int n,nPhoto,nPaid;
nPhoto = GetParkManPhotoFlag(pParkrec);
nPaid = GetParkManPhotoFlag(pParkrec);
if(nPhoto && nPaid)n=0;
else if(nPhoto)n=1;
else if(nPaid)n=2;
else n=0;
return(pszText[n]);
}
//设置监视当天停车记录
int SetMonitorTodayParkrec(TMonitorFrame *te)
{
static char pszTitle[]="(当天)";
TADOQuery *pQuery;;
int rc,nNowDate,nIndex;
char szBuf[50],szStr[30],szTable[20],*p;
pQuery=(TADOQuery *)GetRecordQuery();
te->m_RecordDataSource->DataSet=pQuery;
if(pQuery==NULL)return(FALSE);
te->m_RecordTab->GetTextBuf(szBuf,sizeof(szBuf));
p=strchr(szBuf,'(');
if(p!=NULL)*p=0;
lstrcat(szBuf,pszTitle);
te->m_RecordTab->SetTextBuf(szBuf);
nNowDate = GetDateOnNow();
DWORDToDate(szStr,nNowDate);
wsprintf(szBuf,"OUTTIME=%s",szStr);
GetQueryOrderBy(pQuery->SQL,szStr);
GetQueryTableName(pQuery->SQL,szTable);
rc=QueryOneADOTable(pQuery,szTable,szBuf,szStr);
nIndex = te->m_MonitorPageControl->ActivePageIndex;
if(nIndex!=2)//确定监控页面
te->m_MonitorPageControl->ActivePageIndex=2;
SetParkrecDBGridWidth(te->m_RecordDBGrid);
return(rc);
}
//设置监视所有停车记录
int SetMonitorAllParkrec(TMonitorFrame *te)
{
TADOQuery *pQuery;;
int rc,nIndex;
char szBuf[50],szStr[30],szTable[20],*p;
pQuery=(TADOQuery *)GetRecordQuery();
te->m_RecordDataSource->DataSet=pQuery;
if(pQuery==NULL)return(FALSE);
te->m_RecordTab->GetTextBuf(szBuf,sizeof(szBuf));
p=strchr(szBuf,'(');
if(p!=NULL)*p=0;
te->m_RecordTab->SetTextBuf(szBuf);
GetQueryOrderBy(pQuery->SQL,szStr);
GetQueryTableName(pQuery->SQL,szTable);
rc=QueryOneADOTable(pQuery,szTable,NULL,szStr);
nIndex = te->m_MonitorPageControl->ActivePageIndex;
if(nIndex!=2)//确定监控页面
te->m_MonitorPageControl->ActivePageIndex=2;
SetParkrecDBGridWidth(te->m_RecordDBGrid);
return(rc);
}
//设置监视所有场内车辆
int SetMonitorAllParkin(TMonitorFrame *te)
{
TADOQuery *pQuery;
int rc,nIndex;
char *p,szTable[30],szStr[30];
pQuery=(TADOQuery *)GetParkInQuery();
te->m_ParkinDataSource->DataSet=pQuery;
if(pQuery==NULL)return(FALSE);
//修改标题
te->m_ParkInTab->GetTextBuf(szStr,sizeof(szStr));
p=strchr(szStr,'(');
if(p!=NULL)*p=0;
te->m_ParkInTab->SetTextBuf(szStr);
GetQueryOrderBy(pQuery->SQL,szStr);
GetQueryTableName(pQuery->SQL,szTable);
rc=QueryOneADOTable(pQuery,szTable,NULL,szStr);
nIndex = te->m_MonitorPageControl->ActivePageIndex;
if(nIndex!=1)//确定监控页面
te->m_MonitorPageControl->ActivePageIndex=1;
SetParkinDBGridWidth(te->m_ParkInDBGrid);
return(rc);
}
//设置监视外出车辆
int SetMonitorOut(TMonitorFrame *te)
{
int rc,nIndex;
nIndex = te->m_MonitorPageControl->ActivePageIndex;
if(nIndex!=0)//确定监控页面
te->m_MonitorPageControl->ActivePageIndex=0;
return(nIndex);
}
//多条件查询停车记录
int InquireParkrec(TMonitorFrame *pFrame)
{
static char pszTitle[]="(多条件)";
TADOQuery *pQuery;
int rc,nIndex;
char *pszBuf,*p;
char szText[50],szStr[30],szTable[20];
pQuery=(TADOQuery *)GetRecordQuery();
pFrame->m_RecordDataSource->DataSet=pQuery;
if(pQuery==NULL)return(FALSE);
pszBuf = new char [500];
rc = ReworkInqParkrec(pFrame,pszBuf,500);
if(rc){
//修改标题
pFrame->m_RecordTab->GetTextBuf(szText,sizeof(szText));
p=strchr(szText,'(');
if(p!=NULL)*p=0;
lstrcat(szText,pszTitle);
pFrame->m_RecordTab->SetTextBuf(szText);
GetQueryOrderBy(pQuery->SQL,szStr);
GetQueryTableName(pQuery->SQL,szTable);
rc=QueryOneADOTable(pQuery,szTable,pszBuf,szStr);
nIndex = pFrame->m_MonitorPageControl->ActivePageIndex;
if(nIndex!=2)//确定监控页面
pFrame->m_MonitorPageControl->ActivePageIndex=2;
SetParkrecDBGridWidth(pFrame->m_RecordDBGrid);
}
delete[] pszBuf;
return(rc);
}
//多条件查询入场记录
int InquireParkin(TMonitorFrame *pFrame)
{
static char pszTitle[]="(多条件)" ;
TADOQuery *pQuery;;
int rc,nIndex;
char *pszBuf,*p;
char szText[50],szStr[30],szTable[20];
pQuery=(TADOQuery *)GetParkInQuery();
pFrame->m_ParkinDataSource->DataSet=pQuery;
if(pQuery==NULL)return(FALSE);
pszBuf = new char [500];
rc = ReworkInqParkin(pFrame,pszBuf,500);
if(rc){
//修改标题
pFrame->m_ParkInTab->GetTextBuf(szText,sizeof(szText));
p=strchr(szText,'(');
if(p!=NULL)*p=0;
lstrcat(szText,pszTitle);
pFrame->m_ParkInTab->SetTextBuf(szText);
GetQueryOrderBy(pQuery->SQL,szStr);
GetQueryTableName(pQuery->SQL,szTable);
rc=QueryOneADOTable(pQuery,szTable,pszBuf,szStr);
nIndex = pFrame->m_MonitorPageControl->ActivePageIndex;
if(nIndex!=1)//确定监控页面
pFrame->m_MonitorPageControl->ActivePageIndex=1;
SetParkinDBGridWidth(pFrame->m_ParkInDBGrid);
}
delete[] pszBuf;
return(rc);
}
//删除场内车辆
int DeleteParkinRecord(TMonitorFrame *pFrame,int nMode)
{
static char *pszText[]={"是否真的删除(不可恢复地)\n当前一条入场记录",
"是否真的删除(不可恢复地)\n当前所有入场记录"};
TADOQuery *pParkinQuery,*pOtherQuery;
char szWhere[200];
int rc,nIndex;
rc=FALSE;
pParkinQuery = (TADOQuery *)pFrame->m_ParkinDataSource->DataSet;
nIndex = pFrame->m_MonitorPageControl->ActivePageIndex;
if(nIndex==1 && GetAllRecNum(pParkinQuery)>0){//获取总记录数
if(nMode==DELETE_ALL)nIndex=1;
else nIndex=0;
nIndex=Application->MessageBox(pszText[nIndex],GetMainTitle(),
MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2|MB_APPLMODAL);
if(nIndex==IDYES) rc=TRUE;
}
if(rc){
if(nMode==DELETE_ALL){//删除当前所有
GetQueryWhereName(pParkinQuery->SQL,szWhere);
pOtherQuery = (TADOQuery *)GetOtherQuery();
EmptyOneADOTable(pOtherQuery,GetParkinTableName(),szWhere);//删除表中数据
OpenADOQuery(pParkinQuery,NULL);//查询数据表
}
else {//删除当前一条
DelCurRecordOnTable(pParkinQuery); //删除记录
OpenADOQuery(pParkinQuery,NULL);//查询数据表
}
}
return(rc);
}
//删除停车记录
int DeleteParkrecRecord(TMonitorFrame *pFrame,int nMode)
{
static char *pszText[]={"是否真的删除(不可恢复地)\n当前一条停车记录",
"是否真的删除(不可恢复地)\n当前所有停车记录"};
TADOQuery *pRecQuery,*pOtherQuery;
char szWhere[200];
int rc,nIndex;
rc=FALSE;
pRecQuery = (TADOQuery *)pFrame->m_RecordDataSource->DataSet;
nIndex = pFrame->m_MonitorPageControl->ActivePageIndex;
if(nIndex==2 && GetAllRecNum(pRecQuery)>0){//获取总记录数
if(nMode==DELETE_ALL)nIndex=1;
else nIndex=0;
nIndex=Application->MessageBox(pszText[nIndex],GetMainTitle(),
MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2|MB_APPLMODAL);
if(nIndex==IDYES) rc=TRUE;
}
if(rc){
if(nMode==DELETE_ALL){//删除当前所有
GetQueryWhereName(pRecQuery->SQL,szWhere);
pOtherQuery = (TADOQuery *)GetOtherQuery();
EmptyOneADOTable(pOtherQuery,GetParkrecTableName(),szWhere);//删除表中数据
OpenADOQuery(pRecQuery,NULL);//查询数据表
}
else {//删除当前一条
DelCurRecordOnTable(pRecQuery); //删除记录
OpenADOQuery(pRecQuery,NULL);//查询数据表
}
}
return(rc);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -