📄 userdata.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdio.h>
#pragma hdrstop
#include "UserData.h"
#include "servermodule.h"
#include "bdbf.h"
#include "option.h"
#include "InqUser.h"
#include "EditUser.h"
#include "param.h"
#include "gridtool.h"
#include "datetool.h"
#include "dido.h"
#include "Maintain.h"
#include "CBuilder.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
//设置编辑格栅的列宽度
static void SetTextDBGridWith(TDBGrid *pDBGrid);
//设置编辑、链表
static void SetEditText(TUserForm *ta);
//获取相同内容的其它记录(0=>无,1=>其它记录)
static int GetOtherUserOnTable(USERDATA *Sour,int nOld);
//保存到HolderData数据表(nMode=0 追加)
static int SaveToHolderTable(USERDATA *t,int nMode);
//删除HolderData数据表(RecordID=t->HolderNo)记录
static int DelCurRecordOnHolderTable(USERDATA *t);
//转化UserData为HolderData
static void *UserDataToHolder(HOLDERDATA *Dest,USERDATA *Sour);
//显示当前记录
static void ShowCurRecord(TUserForm *te,USERDATA *t);
//清除当前停车记录
static void ClearCurRecord(TUserForm *te);
//---------------------------------------------------------------------------
__fastcall TUserForm::TUserForm(TComponent* Owner)
: TForm(Owner)
{
m_nDone=0;
}
//设置用户数据
int SetUserData(TComponent* Owner)
{
TUserForm *se;
int rc;
rc=FALSE;
se = new TUserForm((TComponent*)Owner);
if(se!=NULL){
SetEditText(se);
se->ShowModal();
rc=se->m_nDone;
delete se;
}
return(rc);
}
//设置编辑、链表
void SetEditText(TUserForm *ta)
{
TADOQuery *pQuery;
//用EditADOQuery元件查询一个表中记录
pQuery = (TADOQuery *)GetEditQuery();
if(pQuery!=NULL)
QueryOneADOTable(pQuery,GetUserTableName(),NULL,"CARTAG");
ta->m_TextDataSource->DataSet = pQuery;
//设置编辑格栅的列宽度
SetTextDBGridWith(ta->m_TextDBGrid);
}
void __fastcall TUserForm::m_CloseButClick(TObject *Sender)
{
ModalResult=IDOK;
}
//用户资料维护
void __fastcall TUserForm::MaintainUserButClick(TObject *Sender)
{
TADOQuery *pQuery;
int rc;
USERDATA a;
int nMode;
nMode = ((TControl *)Sender)->Tag-1000;
if(nMode<0)nMode=0; //默认为领用
pQuery = (TADOQuery *)m_TextDataSource->DataSet;
rc = (int)pQuery;
if(rc){
ReadUserRecord(pQuery,&a);
rc=a.nHolderNo; //持卡者编号必须>0
}
if(rc) //维护用户帐号
rc=MaintainUserData(this,&a,nMode);
if(rc){
rc=EditDataSet(pQuery);
if(rc)SaveUserRecord(pQuery,&a);
if(rc)rc=PostDataSet(pQuery);
if(!rc)ShowTableError(1);
}
}
//---------------------------------------------------------------------------
void __fastcall TUserForm::m_FindUserButClick(TObject *Sender)
{
int rc;
char *pszStr,szOrder[20];
TADOQuery *pQuery;
pszStr = new char[500];
rc=(int)pszStr;
if(rc){
pQuery = (TADOQuery *)m_TextDataSource->DataSet;
rc=(int)pQuery;
}
if(rc)
rc= ReworkInqUser(this,pszStr,500);//输入查询多条件
if(rc){ //获取SQL查询Where条件
GetQueryOrderBy(pQuery->SQL,szOrder);
QueryOneADOTable(pQuery,GetUserTableName(),pszStr,szOrder);
}
if(pszStr!=NULL)delete[] pszStr;
}
//挂失
void __fastcall TUserForm::m_LostCardButClick(TObject *Sender)
{
static char pszText[]="是否真的挂失\n\n"
"当前用户(编号为:\"%d\")\n所领用卡片(卡号为:\"%d\")?\n\n"
"卡片挂失后, 在被恢复之前将不在有效!!",
pszDef[]= "当前用户所领用卡片(卡号为:\"%d\")\n已经被挂失!",
pszNoHolder[]="用户不存在或未领用卡片!";
TADOQuery *pQuery;
int rc;
char szBuf[200];
USERDATA a;
pQuery = (TADOQuery *)m_TextDataSource->DataSet;
rc = (int)pQuery;
if(rc){
ReadUserRecord(pQuery,&a);
if(a.nHolderNo==0 || a.nCardNo==0){
rc=FALSE;
Application->MessageBox(pszNoHolder,GetMainTitle(),
MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
}
}
if(rc){
rc=!GetUserPauseFlag(&a);
MessageBeep(MB_ICONSTOP);
if(rc){//提示挂失
wsprintf(szBuf,pszText,a.nHolderNo,a.nCardNo);
rc= Application->MessageBox(szBuf,GetMainTitle(),
MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2|MB_APPLMODAL);
if(rc==IDYES)rc=TRUE;
else rc=FALSE;
}
else{//已经挂失
wsprintf(szBuf,pszDef,a.nCardNo);
Application->MessageBox(szBuf,GetMainTitle(),
MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
}
}
if(rc){
SetUserPauseFlag(&a,TRUE);
rc=SaveUserDataToCardTable(&a);//保存用户部分资料到卡片表中
}
if(rc){
rc=EditDataSet(pQuery);
if(rc)SaveUserRecord(pQuery,&a);
if(rc)rc=PostDataSet(pQuery);
if(!rc)ShowTableError(1);
}
}
//恢复领用卡片
void __fastcall TUserForm::m_ResetCardButClick(TObject *Sender)
{
static char pszText[]="是否真的恢复\n\n"
"当前用户(编号为:\"%d\")\n所领用卡片(卡号为:\"%d\")?\n\n",
pszDef[]= "当前用户所领用卡片(卡号为:\"%d\")\n已经被恢复!",
pszNoHolder[]="用户不存在或未领用卡片!";
TADOQuery *pQuery;
int rc;
char szBuf[200];
USERDATA a;
pQuery = (TADOQuery *)m_TextDataSource->DataSet;
rc = (int)pQuery;
if(rc){
ReadUserRecord(pQuery,&a);
if(a.nHolderNo==0 || a.nCardNo==0){
rc=FALSE;
Application->MessageBox(pszNoHolder,GetMainTitle(),
MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
}
}
if(rc){
rc=GetUserPauseFlag(&a);
MessageBeep(MB_ICONSTOP);
if(rc){//提示恢复
wsprintf(szBuf,pszText,a.nHolderNo,a.nCardNo);
rc= Application->MessageBox(szBuf,GetMainTitle(),
MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2|MB_APPLMODAL);
if(rc==IDYES)rc=TRUE;
else rc=FALSE;
}
else{//已经恢复
wsprintf(szBuf,pszDef,a.nCardNo);
Application->MessageBox(szBuf,GetMainTitle(),
MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
}
}
if(rc){
SetUserPauseFlag(&a,FALSE);
rc=SaveUserDataToCardTable(&a);//保存用户部分资料到卡片表中
}
if(rc){
rc=EditDataSet(pQuery);
if(rc)SaveUserRecord(pQuery,&a);
if(rc)rc=PostDataSet(pQuery);
if(!rc)ShowTableError(1);
}
}
//注销
void __fastcall TUserForm::m_LogoutCardButClick(TObject *Sender)
{
static char pszText[]="是否真的注销\n\n"
"当前用户(编号为:\"%d\")\n所领用卡片(卡号为:\"%d\")?\n\n"
"卡片注销后, 在被领用之前将不在有效!!",
pszNoHolder[]="用户不存在或未领用卡片!";
TADOQuery *pQuery;
int rc;
char szBuf[200];
USERDATA a;
pQuery = (TADOQuery *)m_TextDataSource->DataSet;
rc = (int)pQuery;
if(rc){
ReadUserRecord(pQuery,&a);
if(a.nHolderNo==0 || a.nCardNo==0){
rc=FALSE;
Application->MessageBox(pszNoHolder,GetMainTitle(),
MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
}
}
if(rc){
rc=GetUserHoldFlag(&a);
MessageBeep(MB_ICONSTOP);
if(rc){//提示注销
wsprintf(szBuf,pszText,a.nHolderNo,a.nCardNo);
rc= Application->MessageBox(szBuf,GetMainTitle(),
MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2|MB_APPLMODAL);
if(rc==IDYES)rc=TRUE;
else rc=FALSE;
}
}
if(rc){
SetUserHoldFlag(&a,FALSE);//注销领用卡片
rc=SaveUserDataToCardTable(&a);//保存用户部分资料到卡片表中
}
if(rc){
a.nCardNo=0; //注销领用卡片
rc=EditDataSet(pQuery);
if(rc)SaveUserRecord(pQuery,&a);
if(rc)rc=PostDataSet(pQuery);
if(!rc)ShowTableError(1);
}
}
//设置编辑格栅的列宽度
void SetTextDBGridWith(TDBGrid *pDBGrid)
{
int i,n,nWidth;
int x[10];
nWidth = pDBGrid->ClientRect.Width()-10;
n = pDBGrid->Columns->Count;
ZeroMemory(x,sizeof(x));
x[2]=55; x[3]=55;
for(i=0;i<n;i++)nWidth -= x[i]+1;
if(n>2)nWidth /= (n-2);
x[0]=x[1]=nWidth-1;
for(i=0;i<n;i++)
pDBGrid->Columns->Items[i]->Width=x[i];
}
void __fastcall TUserForm::m_TextDBGridTitleClick(TColumn *Column)
{
static char *pszName[]={"CARTAG","USERSTR","CARDNO"};
int rc;
TADOQuery *pQuery;
char szBuf[500];
rc=Column->Index;
if(rc>=0 && rc<sizeof(pszName)/sizeof(char *))
pQuery = (TADOQuery *)m_TextDataSource->DataSet;
else pQuery==NULL;
if(pQuery!=NULL){ //获取SQL查询Where条件
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -