读书人

用户登陆界面 出现的有关问题

发布时间: 2012-02-20 21:18:24 作者: rapoo

用户登陆界面 出现的问题

小弟初学BCB,试做了个用户登陆界面 查询ACCESS数据库中username表中的字段 username中有(name.password.right)三个字段 登陆界面上有ADOQUERY和ADOTABLE两个组件 程序运行的时候,我输入了正确的用户名和密码.它提示说 "连接成功 ' ,点击 "确定 ",出现
"Project project1.exe raised exception class EAcess Violation with message 'Access violation ' in module 'vcl60.bpl '的错误

程序代码如下: (主窗体中也有一个ADOTABLE组件)

#include <vcl.h>
#pragma hdrstop

#include "Unit2.h "
#include "Unit1.h "

#pragma package(smart_init)
#pragma resource "*.dfm "
TForm2 *Form2;

__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}


void __fastcall TForm2::Button1Click(TObject *Sender)
{

Form2-> ADOTable1-> Active=true;
TLocateOptions Opts;
Opts < <loPartialKey;
if(Form2-> ADOTable1-> Locate( "name ",Edit2-> Text,Opts)) //查询是否在有此用户
{
AnsiString a = Edit3-> Text;
ADOQuery1-> Close();
ADOQuery1-> SQL-> Clear();

ADOQuery1-> SQL-> Text= "select password from username where name = ' " + Edit2-> Text + " ' ";

ADOQuery1-> Open();
AnsiString b = ADOQuery1-> FieldByName( "password ")-> AsString;
if(a==b) //验证密码
{
ShowMessage( "连接成功 ");
ADOQuery1-> Close();
ADOQuery1-> SQL-> Clear();

ADOQuery1-> SQL-> Text= "select right from username where name = ' " + Edit2-> Text + " ' ";

ADOQuery1-> Open();
AnsiString b = ADOQuery1-> FieldByName( "right ")-> AsString;


if(b== "0 ") //判断权限
{
Form1-> Button8-> Enabled=true;
}
Form1-> Show(); //进入主页面
Form2-> Close();
}
else
{
ShowMessage( "密码错误 ");
}
}
else
{
ShowMessage( "找不到数据! ");
}
}



[解决办法]
搞不定的话你把你的工程发邮件给我duancz@ebmtech.com.cn

读书人网 >C++ Builder

热点推荐