void CFindPassWord1::OnKillfocusEDITAdminName() 
{
int num;
char ch1[40],ch2[40];
m_EDIT_AdminName.GetWindowText(ch1,20);
num=atoi(ch1);
itoa(num,ch2,40);

if(m_pSet->IsOpen())
m_pSet->Close();
m_pSet->m_strFilter.Format("Name='%s'",ch2);
m_pSet->m_strSort="Name";
m_pSet->Open();
if(!m_pSet->IsEOF()||m_pSet->m_Identify!="Administer")
MessageBox("此用户名不合法!");

else
{
m_EDIT_strQuestion1=m_pSet->m_Question1;
m_EDIT_strQuestion2=m_pSet->m_Question2;
}
}
此函数为CPassWordDlg类的一个成员函数。
1.红色标注出来的部分的功能是获取编辑框中的字符串;
2.绿色标注出来的部分的功能是用来验证数据库中是否有与此字符串相同的用户名,并且此用户名所拥有的权限是否足够高....
3.m_pSet一般是在C**View的头文件中进行定义及在C**View.cpp中进行初始化的(我的这两个文件分别为CTestView.h和CTestView。cpp)。但当不在CPassWordDlg类中对m_pSet进行定义时,编译就会报错,所以我又在CPassWordDlg.cpp中给m_pSet进行了定义(CTestSet *m_pSet)。后面经过各种改错后,终于编译通过了。
4.如以上代码,此函数是一个弹出对话框中的一个编辑框在失去光标时要响应的函数。主要实现的是在弹出一个对话框后,向编辑框中输入用户名,然后在光标离开此编辑框之后要触发此函数,来验证此用户名是否是数据库中的合法用户,随意说就需要连接数据库(ODBC),进而也就需要m_pSet了。
问题来了:当我运行此程序时,在贯标离开编辑框之后,程序就会卡死并弹出一个报错窗口。经过单步运行,发现运行到if(m_pSet->IsOpen())
    m_pSet->Close();这步时出的问题,此时,程序卡在了这里
在CTestView中用连接数据库,获取信息的程序都能正常使用,但惟独在弹出的对话框中出现了这种问题。
求大神们指导一下吧,这个问题弄了一天多了,真不知道怎么弄了,要崩溃了啦MFCm_pSet数据库对话框