在设计用户登陆界面时,实行用户名可查询,在输入用户后加了一个查询按钮
本人用SQL的数据库,可不知道怎么样来写这段代码,来实现查询并通过验证。
有哪为高高高手知道??谢谢急手中
本人用SQL的数据库,可不知道怎么样来写这段代码,来实现查询并通过验证。
有哪为高高高手知道??谢谢急手中
解决方案 »
- idFTP.list提示No fiels found ,怎么回事呢?
- 点击按钮发送键盘虚拟值
- delphi修改数据库表格问题
- 请问一个DBgridEh汇总行小数显示的问题
- 使用控件EMS ADVANCD EXCEL Report导出excel时包括图片
- 关于Borland Socket Server使用方式的问题
- 有字符串“AB#¥·中国adff()”,怎么样区分这些字符串中是不是有汉字?
- 如何把CHAR和DOUBLE的数据一起发给对方.
- 监听程序怎么隐藏起来啊?
- 请问SqlServer2000中.............
- 我的DELPHI7。0的安装后 怎么BDE管理器里只有 MQIS啊
- dbgridEh的wordwrap功能问题!??
var now_pass: String;
i: integer;
begin
with LoginQry do
begin
now_pass:=ePassword.Text;
if length(now_pass) mod 2 <> 0 then
now_pass := now_pass + '1';
for i:=1 to length(now_pass) do
now_pass[i]:=chr(ord(now_pass[i])+50);
if Active then
Close;
Sql.Clear;
Sql.Add('Select GH, XM, CZQX, KL, ZCRQ From CZYB');
Sql.Add(' Where GH = ''' + eWorkNo.Text + '''' + ' and KL = ''' + now_pass + '''');
try
Open;
sWorkNo := FieldByName('GH').AsString;
sUserName := FieldByName('XM').AsString;
sLimit := FieldByName('CZQX').AsString;
Close;
except
Application.MessageBox('系统出错!!!', '失败信息', MB_OK);
ModalResult := mrCancel;
exit;
end;
// sWorkNo, suserName, slimit, sKey are global variable, define in Datamdl. end;
if sWorkNo <> '' then
begin
with DM do
begin
ModalResult := mrOk;
sPassword := now_pass;
// MainFrm.StatusBar.Panels[1].Text := '操作员:' + sUserName;
end;
with LoginQry do
begin
Close;
Sql.Clear;
Sql.Add('Insert Into Log(DLSJ, DLGH, XM, DLZT)');
Sql.Add(' Values ( :a, :b, :c, :d)');
ParamByName('b').AsString := sWorkNo;
ParamByName('c').AsString := sUserName;
SP.Prepare;
try
SP.ExecProc;
ParamByName('a').AsDateTime := SP.ParamByName('@RetDateTime').Value; //Get DateTime from Server
dLoginTime := ParamByName('a').AsDateTime;
ParamByName('d').AsString := '成功'; // Success
ExecSql;
except
Application.MessageBox('系统出错!!!', '失败信息', MB_OK);
ModalResult := mrCancel;
exit;
end;
end;
exit;
end
else
begin
iLoginNum := iLoginNum + 1;
Application.MessageBox('登录失败!!!', '失败信息', MB_OK);
with LoginQry do
begin
Close;
Sql.Clear;
Sql.Add('Insert Into Log(DLSJ, DLGH, XM, DLZT)');
Sql.Add(' Values ( :a, :b, :c, :d)');
ParamByName('b').AsString := eWorkNo.Text;
ParamByName('c').AsString := eUserName.Text;
SP.Prepare;
try
SP.ExecProc;
ParamByName('a').AsDateTime := SP.ParamByName('@RetDateTime').Value; //Get DateTime from Server;
ParamByName('d').AsString := '失败'; // Fail
ExecSql;
except
Application.MessageBox('系统出错!!!', '失败信息', MB_OK);
ModalResult := mrCancel;
exit;
end;
end;
if iLoginNum >= 3 then
begin
ModalResult := mrCancel;
exit;
end;
eWorkNo.Text := '';
eUserName.Text := '';
ePassword.Text := '';
eWorkNo.SetFocus ;
ModalResult := mrNone;
end;
end;
自己改改吧
的OnChange事件中添加一句查询的
代码,把存储用户信息的数据表
的当前指针转移到该用户的位置上。
================================
当用户输入完毕密码后,敲“登陆”
按钮时就检查当前位置的“密码”
字段的值是否与有户输入的一致,
就行了。
Table1.Locate();
的方法。
每次都看到有你的回答,是不是想升级到猩猩啊?^_^
第一种EDIT录入参数后提交给DB去验证.
第二种COMOBOX在FMCREAT中就将所有用户名拉出来填进去,EDIT输入密码,
验证可以在本地,也可以在SERVER端.
不知道你什么意思.
难道是让用户输上1-2个字符,LIKE 选出库里的用户名?