📄 chat.cpp
字号:
m_List1.SetColumnWidth(1,wid);
m_List1.SetExtendedStyle (LVS_EX_FULLROWSELECT);
//Second
m_List2.InsertColumn (0,"软件名称");
m_List2.InsertColumn (1,"软件格式");
m_List2.InsertColumn (2,"软件编号");
m_List2.GetWindowRect(& rect);
wid=3*(rect.right -rect.left )/8;
m_List2.SetColumnWidth(0,wid);
m_List2.SetColumnWidth(1,wid);
m_List2.SetExtendedStyle (LVS_EX_FULLROWSELECT);
//Databaxe Initialled
CSoftDocSystemApp* myApp=(CSoftDocSystemApp*)AfxGetApp();
CString source_;
source_.Format ("driver={SQL Server};server=%s;database=SoftDocument",myApp->ConnectServer);
_bstr_t source=source_;
_bstr_t pwd=myApp->ConnectPwd;
_bstr_t user=myApp->ConnectUser;
HRESULT hr;
try{
hr = m_DBCnt.CreateInstance(_uuidof(Connection));
if(SUCCEEDED(hr))
hr = m_DBCnt->Open(source, user, pwd, 16);
if(SUCCEEDED(hr))
{m_fConnected = TRUE;
}
else
m_fConnected = FALSE;
}
catch (_com_error &e){
MessageBox(e.ErrorMessage());
m_fConnected = FALSE;
}
if(!m_fConnected) MessageBox("ADO数据源初始化失败!");
else m_strSource = (char * )source;
Initiate();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CChat::BorrowTotal()
{
UpdateData();
m_List1.DeleteAllItems ();
m_List2.DeleteAllItems ();
m_List1.SetRedraw (false);
GetDlgItem(IDC_BUTTON1)->EnableWindow(false);
GetDlgItem(IDC_BUTTON2)->EnableWindow(false);
//定义字符串
CString geshi[6];
geshi[1]="软盘";
geshi[2]="光盘";
geshi[4]="文本";
geshi[3]="硬盘";
geshi[5]="其他";
_variant_t Holder;
if(m_Chattype==0)
{
CString sql_;
sql_.Format ("SELECT * FROM SoftDocInfo WHERE 软盘 = '在家' or 光盘= '在家' or 硬盘 = '在家' or 文本 = '在家' or 其他= '在家' ");
_bstr_t sql=sql_;
_bstr_t source=m_strSource;
_RecordsetPtr Myset;
Myset.CreateInstance (__uuidof(Recordset));
try{
Myset->Open (sql,source,adOpenDynamic,adLockOptimistic,adCmdText);
}
catch (_com_error &e)
{AfxMessageBox(e.ErrorMessage());
return;}
//看是否存在纪录
int Shumu=0;
while(!Myset->adoEOF)
{Shumu+=1;
Myset->MoveNext ();}
if(Shumu<1)return;
Myset->MoveFirst ();
int i=0;
int j=0;
CString mystr,queryStr,chstr;
CString softnumber,softname;
GetDlgItem(IDC_LIST1)->EnableWindow(true);
GetDlgItem(IDC_LIST2)->EnableWindow(true);
while(!Myset->adoEOF ){
//每一入库格式一行
Holder=Myset->GetCollect ("软件名称");
if(Holder.vt!=VT_NULL)
{softname=(char*)(_bstr_t)Holder;
softname.TrimRight(" ");}
Holder=Myset->GetCollect ("软件编号");
if(Holder.vt!=VT_NULL)
{softnumber=(char*)(_bstr_t)Holder;
softnumber.TrimRight(" ");}
//判断格式
for(int i=1;i<6;i++)
{ _variant_t strgeshi=geshi[i];
Holder=Myset->GetCollect (strgeshi);
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
if(mystr=="在家"){
m_List1.InsertItem (j,softname);
m_List1.SetItemText (j,1,geshi[i]);
m_List1.SetItemText (j,2,softnumber);
j++;}
}
//if
}Myset->MoveNext();}
}
m_List1.SetRedraw (true);
}
void CChat::BorrowSelect()
{
//条件查询
UpdateData();
CString sql_,str2,str;
int HaveNo;
_RecordsetPtr Myset;
CString geshi[6];
geshi[1]="软盘";
geshi[2]="光盘";
geshi[4]="文本";
geshi[3]="硬盘";
geshi[5]="其他";
_variant_t Holder;
sql_="select * from SoftDocInfo where";
m_SoftName.TrimRight(" ");
m_Xinghao.TrimRight (" ");
m_SoftType.TrimRight (" ");
HaveNo=0;
str.Format (" 软件类型 ='%s'",m_SoftType);
if(!m_SoftType.IsEmpty ()){sql_+=str;HaveNo=1;}
str.Format (" 软件名称 ='%s'", m_SoftName);
if(!m_SoftName.IsEmpty ()){
if(HaveNo==1)sql_+=str;
else
{ sql_=sql_+" and "+str;
HaveNo=1;}}
str.Format (" and 所属型号 ='%s'",m_Xinghao);
if(!m_Xinghao.IsEmpty ())
str.Format(" and 作者 ='%s'",m_Author);
if(!m_Author.IsEmpty ())sql_+=str;
str.Format (" or 软件编号 ='%s'",m_Number);
if(!m_Number.IsEmpty ())sql_+=str;
str.Format (" and %s ='在家'",m_GeShi);
if(!m_GeShi.IsEmpty ())sql_+=str;
//查找所需软件稳当
Myset.CreateInstance (__uuidof(Recordset));
_bstr_t Mysql=sql_;
_bstr_t source=m_strSource;
m_List1.DeleteAllItems ();
try{
Myset->Open (Mysql,source,adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage());return;}
int Shumu=0;
while(!Myset->adoEOF)//记录数
{Shumu+=1;
Myset->MoveNext ();}
if(Shumu<1)return;
Myset->MoveFirst ();
int i=0;
int j=0;
CString mystr,queryStr,chstr;
CString softnumber,softname;
GetDlgItem(IDC_LIST1)->EnableWindow(true);
GetDlgItem(IDC_LIST2)->EnableWindow(true);
while(!Myset->adoEOF ){
//每一入库格式一行
Holder=Myset->GetCollect ("软件名称");
if(Holder.vt!=VT_NULL)
{softname=(char*)(_bstr_t)Holder;
softname.TrimRight(" ");}
Holder=Myset->GetCollect ("软件编号");
if(Holder.vt!=VT_NULL)
{softnumber=(char*)(_bstr_t)Holder;
softnumber.TrimRight(" ");}
//判断格式
for(int i=1;i<6;i++)
{ _variant_t strgeshi=geshi[i];
Holder=Myset->GetCollect (strgeshi);
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
if(mystr=="在家"){
m_List1.InsertItem (j,softname);
m_List1.SetItemText (j,1,geshi[i]);
m_List1.SetItemText (j,2,softnumber);
j++;}
}
//if
}Myset->MoveNext();}
}
void CChat::ReturnTotal()
{
UpdateData();
m_List1.DeleteAllItems ();
m_List2.DeleteAllItems ();
m_List1.SetRedraw (false);
GetDlgItem(IDC_BUTTON1)->EnableWindow(false);
GetDlgItem(IDC_BUTTON2)->EnableWindow(false);
CString geshi[6];//格式字符串
geshi[1]="软盘";
geshi[2]="光盘";
geshi[4]="文本";
geshi[3]="硬盘";
geshi[5]="其他";
int i=0;
int j=0;
CString mystr,queryStr,chstr;
CString softnumber,softname;
_variant_t Holder;
if(m_Chattype==1){
CString sql_;
sql_.Format ("SELECT * FROM SoftDocInfo WHERE 软盘 = '%s' or 光盘 = '%s' or 硬盘 = '%s' or 文本 = '%s' or 其他 = '%s' ",m_UserName,m_UserName,m_UserName,m_UserName,m_UserName);
_bstr_t sql=sql_;
_bstr_t source=m_strSource;
_RecordsetPtr Myset;
Myset.CreateInstance (__uuidof(Recordset));
try{
Myset->Open (sql,source,adOpenDynamic,adLockOptimistic,adCmdText);
}
catch (_com_error &e)
{AfxMessageBox(e.ErrorMessage());
return;}
_variant_t Holder;
int Shumu=Myset->GetRecordCount();
int i=0;
CString mystr;
GetDlgItem(IDC_LIST1)->EnableWindow(true);
GetDlgItem(IDC_LIST2)->EnableWindow(true);
while(!Myset->adoEOF ){
Holder=Myset->GetCollect ("软件名称");
if(Holder.vt!=VT_NULL)
{softname=(char*)(_bstr_t)Holder;
softname.TrimRight(" ");}
Holder=Myset->GetCollect ("软件编号");
if(Holder.vt!=VT_NULL)
{softnumber=(char*)(_bstr_t)Holder;
softnumber.TrimRight(" ");}
//判断格式
for(int i=1;i<6;i++)
{ _variant_t strgeshi=geshi[i];
Holder=Myset->GetCollect (strgeshi);
if(Holder.vt!=VT_NULL)
{mystr=(char*)(_bstr_t)Holder;
mystr.TrimRight(" ");
if(mystr==m_UserName){
m_List1.InsertItem (j,softname);
m_List1.SetItemText (j,1,geshi[i]);
m_List1.SetItemText (j,2,softnumber);
j++;}
}
}
Myset->MoveNext ();
}
//if
}
m_List1.SetRedraw (true);
}
void CChat::OnSelectAll()
{
// TODO: Add your control notification handler code here
UpdateData();
if(m_Chattype==1)return;
int AllNot=((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();
if(AllNot)
{
((CButton*)GetDlgItem(IDC_CHECK2))->SetCheck(false);
((CButton*)GetDlgItem(IDC_CHECK3))->SetCheck(false);
((CButton*)GetDlgItem(IDC_CHECK4))->SetCheck(false);
((CButton*)GetDlgItem(IDC_CHECK5))->SetCheck(false);
((CButton*)GetDlgItem(IDC_CHECK7))->SetCheck(false);
((CButton*)GetDlgItem(IDC_CHECK6))->SetCheck(false);
GetDlgItem(IDC_CHECK2)->EnableWindow(false);
GetDlgItem(IDC_CHECK3)->EnableWindow(false);
GetDlgItem(IDC_CHECK4)->EnableWindow(false);
GetDlgItem(IDC_CHECK5)->EnableWindow(false);
GetDlgItem(IDC_CHECK6)->EnableWindow(false);
GetDlgItem(IDC_CHECK7)->EnableWindow(false);
}
else
{
GetDlgItem(IDC_CHECK2)->EnableWindow(true);
GetDlgItem(IDC_CHECK3)->EnableWindow(true);
GetDlgItem(IDC_CHECK4)->EnableWindow(true);
GetDlgItem(IDC_CHECK5)->EnableWindow(true);
GetDlgItem(IDC_CHECK6)->EnableWindow(true);
GetDlgItem(IDC_CHECK7)->EnableWindow(true);
}
}
void CChat::OnCheck6()
{
// TODO: Add your control notification handler code here
UpdateData();
int AllNot=((CButton*)GetDlgItem(IDC_CHECK6))->GetCheck();
if(AllNot)
GetDlgItem(IDC_COMBO5)->EnableWindow(true);
else{
((CComboBox*)GetDlgItem(IDC_COMBO5))->SetWindowText("");
GetDlgItem(IDC_COMBO5)->EnableWindow(false);}
}
void CChat::OnCheck3()
{
// TODO: Add your control notification handler code here
UpdateData();
int AllNot=((CButton*)GetDlgItem(IDC_CHECK3))->GetCheck();
if(AllNot)
GetDlgItem(IDC_COMBO2)->EnableWindow(true);
else{
((CComboBox*)GetDlgItem(IDC_COMBO2))->SetWindowText("");
GetDlgItem(IDC_COMBO2)->EnableWindow(false);
}
}
void CChat::OnCheck4()
{
// TODO: Add your control notification handler code here
UpdateData();
int AllNot=((CButton*)GetDlgItem(IDC_CHECK4))->GetCheck();
if(AllNot)
{
GetDlgItem(IDC_COMBO3)->EnableWindow(true);}
else{
((CComboBox*)GetDlgItem(IDC_COMBO3))->SetWindowText("");
GetDlgItem(IDC_COMBO3)->EnableWindow(false);}
}
void CChat::OnCheck2()
{
// TODO: Add your control notification handler code here
UpdateData();
int AllNot=((CButton*)GetDlgItem(IDC_CHECK2))->GetCheck();
if(AllNot)
GetDlgItem(IDC_COMBO1)->EnableWindow(true);
else{
((CComboBox*)GetDlgItem(IDC_COMBO1))->SetWindowText("");
GetDlgItem(IDC_COMBO1)->EnableWindow(false);
}
}
void CChat::OnCheck5()
{
// TODO: Add your control notification handler code here
int AllNot=((CButton*)GetDlgItem(IDC_CHECK5))->GetCheck();
if(AllNot)
GetDlgItem(IDC_COMBO4)->EnableWindow(true);
else{
((CComboBox*)GetDlgItem(IDC_COMBO4))->SetWindowText("");
GetDlgItem(IDC_COMBO4)->EnableWindow(false);}
}
void CChat::OnCheck7()
{
// TODO: Add your control notification handler code here
int AllNot=((CButton*)GetDlgItem(IDC_CHECK7))->GetCheck();
if(AllNot)
GetDlgItem(IDC_COMBO6)->EnableWindow(true);
else
{((CComboBox*)GetDlgItem(IDC_COMBO6))->SetWindowText("");
GetDlgItem(IDC_COMBO6)->EnableWindow(false);}
}
void CChat::ManagerControl()
{ int m=m_List2.GetItemCount();
int ShunXu=1;
CTime tm=CTime::GetCurrentTime ();
CString str1,str2,str4,str3;
CString ChatNumber;
str3.Format ("%d-%d-%d %d:%d",tm.GetYear(),tm.GetMonth (),tm.GetDay(),tm.GetHour(),tm.GetMinute());
//开始事务
try{
m_DBCnt->BeginTrans();
CString sql2_,sql1_;
if(m_Chattype==0)str1="借";
else str1="还";
for(int i=0;i<m;i++)
{CString strNumber=m_List2.GetItemText (i,2);
CString strName=m_List2.GetItemText (i,0);
CString strGeshi=m_List2.GetItemText (i,1);//取出列表框中得字段
str4=m_Chattype==0?m_UserName:"在家";
ShunXu=ShunXu%10;
ChatNumber.Format("CH%d%02d%02d%02d%02d%d",tm.GetYear (),tm.GetMonth (),tm.GetDay(),tm.GetHour(),tm.GetMinute(),ShunXu);
sql2_.Format("INSERT INTO ChatInfo(交易编号,用户名,软件名称,格式,软件编号,交易类别,交易时间) VALUES('%s','%s','%s','%s','%s','%s','%s')",ChatNumber,m_UserName,strName,strGeshi,strNumber,str1,str3);
_bstr_t sql2=sql2_;
try{//交易纪录
m_DBCnt->Execute(sql2,NULL,adCmdText);}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage());return;}
//写入软件修改信息
CString BorrowDate;
BorrowDate=strGeshi+_T("时间");
sql1_.Format ("UPDATE SoftDocInfo SET %s = '%s', %s = '%s' WHERE 软件编号 = '%s'",strGeshi,str4,BorrowDate,str3,strNumber);
_bstr_t sql1=sql1_;
try{
m_DBCnt->Execute(sql1,NULL,adCmdText);}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage());return;}
if(m_Log.Setup (m_DBCnt))
m_Log.Addlog (m_UserName,str1,strName);//操作日志
ShunXu++;//编号增加1
}
m_List2.DeleteAllItems ();
m_DBCnt->CommitTrans();
}
catch(_com_error& e)
{AfxMessageBox("数据操作失败!");
m_DBCnt->RollbackTrans();return;}
CString OutPutString;
OutPutString.Format ("管理员,用户%s的信息已成功输入!",m_UserName);
AfxMessageBox(OutPutString);
}
void CChat::UserApply()
{
int m=m_List2.GetItemCount();
int ShunXu=1;
CTime tm=CTime::GetCurrentTime ();
CString str1,str2,str4,str3;
CString ChatNumber;
str3.Format ("%d-%d-%d %d:%d",tm.GetYear(),tm.GetMonth (),tm.GetDay(),tm.GetHour(),tm.GetMinute());
//开始事务
try{
m_DBCnt->BeginTrans();
CString sql2_,sql1_;
if(m_Chattype==0)str1="借";
else str1="还";
for(int i=0;i<m;i++)
{CString strNumber=m_List2.GetItemText (i,2);
CString strName=m_List2.GetItemText (i,0);
CString strGeshi=m_List2.GetItemText (i,1);//取出列表框中得字段
ShunXu=ShunXu%10;
ChatNumber.Format("AP%d%02d%02d%02d%02d%d",tm.GetYear (),tm.GetMonth (),tm.GetDay(),tm.GetHour(),tm.GetMinute(),ShunXu);
sql2_.Format("INSERT INTO ApplyTable(申请号,用户名,软件名称,格式,软件编号,申请类别,申请日期) VALUES('%s','%s','%s','%s','%s','%s','%s')",ChatNumber,m_UserName,strName,strGeshi,strNumber,str1,str3);
_bstr_t sql2=sql2_;
try{//输入申请表
m_DBCnt->Execute(sql2,NULL,adCmdText);}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage());return;}
if(m_Chattype==0){
//写入软件修改信息
sql1_.Format ("UPDATE SoftDocInfo SET %s = '预订/%s' WHERE 软件编号 = '%s'",strGeshi,m_UserName,strNumber);
_bstr_t sql1=sql1_;
try{
m_DBCnt->Execute(sql1,NULL,adCmdText);}
catch(_com_error &e){
AfxMessageBox(e.ErrorMessage());return;}}
//CString Event;
//Event.Format ("申请%s",str1);
//if(m_Log.Setup (m_DBCnt))
// m_Log.Addlog (m_UserName,Event,strName);//操作日志
ShunXu++;//编号增加1
}
m_List2.DeleteAllItems ();
m_DBCnt->CommitTrans();
}
catch(_com_error& e)
{AfxMessageBox("数据操作失败!");
m_DBCnt->RollbackTrans();return;}
CString OutPutString;
OutPutString.Format ("用户%s,你的申请已成功递交!",m_UserName);
AfxMessageBox(OutPutString);
}
void CChat::OnDestroy()
{
CDialog::OnDestroy();
if(m_DBCnt->GetState()==adStateOpen)
m_DBCnt->Close();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -