求助大神 ,我刚开始学。。。为主窗口做了个登录界面,但是登录不进去
数据库(ACCESS)是Database0中的表OPERATOR
字段分别是OPERATOR_ACCOUNTANT和OPERATOR_PASSWORD
CLogin类中增加了如下函数
BOOL CLogin::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_KEYDOWN && pMsg->wParam==13)//判断是否按下回车键
{
pMsg->wParam = 9;//将按下的将改为tab键
}
if(pMsg->message == WM_LBUTTONDOWN)//判断鼠标左键是否按下
{
CRect rect,rc;
m_OK.GetWindowRect(&rect);//获得登录按钮区域
m_Cancel.GetWindowRect(&rc);//获得退出按钮区域
CPoint point;
GetCursorPos(&point);//获得鼠标的位置
if(rect.PtInRect(point))//判断鼠标是否在登录按键上
{
UpdateData(TRUE);
if(m_strName.IsEmpty() || m_strPassword.IsEmpty())//判断数据是否为空
{
MessageBox("用户名或密码不能为空");
return FALSE;
}
m_Time++;//记录登录次数
try
{
//创建连接对象实例
m_pConnection.CreateInstance("ADODB.Connection");
//设置连接字符串
_bstr_t strConnection = _T("Driver={Microsoft Access Driver (*.mdb)};"
"Dbq=Database0.mdb;Uid=;Pwd=;");
m_pConnection->Open((_bstr_t)strConnection,"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
//设置SQL语句
CString sql;
sql.Format("select * from OPERATOR where OPERATOR_ACCOUNTANT = '%s' and OPERATOR_PASSWORD = '%s'",
m_strName,m_strPassword);
m_pRecordset = m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText);
if(!m_pRecordset->adoEOF)
{
CDialog::OnOK();//进入主窗体并关闭登录框
}
else
{
if(m_Time == 3)//判断错误是否超过3次
{
MessageBox("密码3次不正确");
CDialog::OnCancel();//关闭对话框
}
else
{
MessageBox("用户名或密码不正确");
m_strName = "";
m_strPassword = "";
UpdateData(FALSE);//更新控件显示
}
}
m_pRecordset->Close();//关闭记录集
m_pConnection->Close();//断开数据库连接
}
if(rc.PtInRect(point))//判断鼠标是否在退出按钮上
{
CDialog::OnCancel();//退出程序
}
}
return CDialog::PreTranslateMessage(pMsg);
}