如何编写登陆系统?采用Access2007

jason34 2010-01-11 01:42:10
我的原理是首先显示一个登陆框,输入密码后访问数据库,如果正确就释放登陆框激活主界面。
但相应的问题就来了,在关闭主界面时报数据库出错。
我想问题应该出于释放登陆框那。我不知道怎么写登陆系统,这是一个很笨的方法。
希望高价指点一下,我应该如何编写?
if(!DataConnect->Conn->Connected)
DataConnect->Conn->Connected = true;

try{
AnsiString sql = "select * from UserConfig";
DataConnect->UserConfigQuery->Active = false;
DataConnect->UserConfigQuery->SQL->Clear();
DataConnect->UserConfigQuery->SQL->Add(sql);
DataConnect->UserConfigQuery->Active = true;


AnsiString pwd = VarToStr(DataConnect->UserConfigQuery->FieldByName("PassWord")->Value);
if(loginFrequency < 3)
{
loginFrequency++;
if(LoginPWD->Text != pwd)
{ //登陆失败
ShowMessage("密碼錯誤");
LoginPWD->Text = "";
DataConnect->UserConfigQuery->Active = false;
return ;
}else if(LoginPWD->Text == pwd)
{
//登陆成功
Login->Free();
TForm1* mainForm = new TForm1(NULL);
mainForm->Show();
}

}else
{
DataConnect->UserConfigQuery->Active = false;
DataConnect->Conn->Connected = false;
Application->Terminate();
}


DataConnect->UserConfigQuery->Active = false;
//DataConnect->Conn->Connected = false;
}catch(Exception &e)
{
ShowMessage("系統出錯");
return ;
}
...全文
367 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
meyas 2010-01-12
  • 打赏
  • 举报
回复
1、在项目属性内,mainForm和Login都自动创建,mainForm为主窗体。
2、在你的工程CPP文件内Application->Run前加入:Application->ShowMainForm = false; 启动后不显示主窗体。
3、把Login窗体的visible属性改成True.

这样程序一启动显示的是Login窗体,登录成功后:
mainForm->Show();
Login->Close();
周药师 2010-01-12
  • 打赏
  • 举报
回复

//项目cpp文件里
......
Application->CreateForm(__classid(TfrmLogin), &frmLogin);
frmLogin->ShowModal(); //加上你的登陆窗体
Application->Run();
lghndyz 2010-01-11
  • 打赏
  • 举报
回复
http://download.csdn.net/source/1490710登陆界面例子!!
blackiron_sh 2010-01-11
  • 打赏
  • 举报
回复
我的建议:

void __fastcall TMainForm::FormCreate(TObject *Sender)
{
//……其它功能代码

//调用登录函数,失败则终止程序,
if(!Login())
{
Application->Terminate();
return ;
}
//如果成功则继续执行以后代码
}
//---------------------------------------------------------------------------
bool __fastcall TMainForm::Login()
{
TLoginForm* lf = new TLoginForm(this);
lf->ShowModal();
bool result = lf->LoginResult;//LoginResult是登录窗口认证结果属性
delete lf;
return result;
}

所有的访问数据库认证代码写在TLoginForm中,主窗口让它一开始就由Application自动创建,生命周期由始至终,而登录窗口是临时窗口,用的时候new出来,不用的时候delete掉
ydlchina 2010-01-11
  • 打赏
  • 举报
回复
在你的项目cpp的WinMain函数中去掉你那个主窗体
例如Form1是主窗体,就去掉下面这句

Application->CreateForm(__classid(TForm1), &Form1);

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧