读书人

登陆框不解

发布时间: 2013-10-29 12:07:57 作者: rapoo

登陆框疑惑
本帖最后由 tnijerry 于 2013-10-28 10:40:03 编辑 为什么连上数据库了,输入的用户名和密码都正确,主界面却出不来呢?

下面是代码:
主程序代码:
void __fastcall TForm1::FormCreate(TObject *Sender)
{

Application->ShowMainForm=false; // 使主窗口先不出现;
Form1->Visible=false;

Form2 = new TForm2(this);

if(Form2->ShowModal() == mrOk)
{
Form1->Visible= true ;
}
else
{
delete Form2;
Application->Terminate(); //程序结束
}

}

登陆框程序代码:

void __fastcall TForm2::Button1Click(TObject *Sender)
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
String sql ="select * from login where UserName = '"+Edit1->Text+"'";
sql += "and Password = '"+Edit2->Text+"'";
ADOQuery1->SQL->Add(sql);
ADOQuery1->Open();

if(ADOQuery1->RecordCount)
{
ModalResult = mrOk ; //用户名和密码正确时,此行代码确实是被执行了
}
else
{
ModalResult = mrCancel ;
}
}
[解决办法]

引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

可能是界面显示出来了,但是被其他界面覆盖了
我记得好像visiable=true相当于show,而show很容易被挡住


不关show的问题,用户名和代码都正确的情况下,主程序居然执行了如下代码:
delete Form2;
Application->Terminate(); //程序结束

而登陆框中是执行如下程序:
ModalResult = mrOk ; //用户名和密码正确时,此行代码确实是被执行了

一直都没想通这是怎么回事?


看起来,不可能啊
你没把ShowModal的返回值调试看看?


我有试过的,ShowModal的返回值一直都是2,就是mrCancel


那就检查sql和RecordCount的值
其实有可能输入用户名和密码时,后面有空格或者其他不可见字符,因为你没有trim

读书人网 >C++ Builder

热点推荐