在密码框中必须输入8个字符,如果数据库表的记录中的密码不够8个后边要加上对应的空格(我试验将数据库中的密码复制才知道的),为什么?怎么解决?还有我不知道TRIM的具体用法,请指教!
如果谁有现成的登陆模块,请发个源码给我学习行吗?我现在用的ADOQUERY查询后比较的。
我的EMAIL:[email protected]
如果谁有现成的登陆模块,请发个源码给我学习行吗?我现在用的ADOQUERY查询后比较的。
我的EMAIL:[email protected]
解决方案 »
- Cxgrid的checkbox勾选问题
- 请教关于如何开发C/S程序一般步骤啊,谢谢
- delphi如何将相对路径转成绝对路径啊~~~
- MS-SQL Server 下栽的网址
- 已知一个窗体的句柄(例如是:99999),请问如何捕捉这个窗体的最小化事件?是否要用到钩子程序?
- 请教高人,如何在程序运行中动态给FastReport中的Memo控件赋值,急……在线等待!
- 招骋软件开发人员(Delphi)
- 高分寻找DOA(Direct Oracle Access) For d5、d6
- 关于SQLSERVER的问题××××××××××
- 如何比较有效地捕捉程序中触发的错误?70分征答。
- 如何顯示一個數值它佔用多少字節
- form2关闭后form1上的dbgrid怎么才能显出新的加入数据?
begin
while length(edit1.text)<8 do
edit1.Text:=edit1.Text+' ';
end;
你的代码好用,谢谢。
如果是SQL Server,把字段设成varchar;
begin
with Frm_data.ADOQuery do//----提取表里的用户名!
begin
Close;
SQL.Clear;
SQL.Add('Select * from User_Info Where User_type=:t1');
Parameters[0].Value:='0';//----表示操作员
Open;
if RecordCount>0 then
begin
Combobox1.Clear;
while not eof do
begin
Combobox1.Items.Add(FieldByName('User_Name').AsString);
Next;
end;
end;
end;
Edit1.Clear;
end;
procedure TFrm_Logo.BitBtn1Click(Sender: TObject);
var
tmp_pass:string;
begin
if Length(Trim(Combobox1.Text))>0 then
begin
// Try
with Frm_data.ADOQuery do
begin
Close;
SQL.Clear;
SQL.Add('Select * from User_Info Where User_Name=:t1');
Parameters[0].Value:=trim(Combobox1.Text);
Open;
// Mydecrypt(
tmp_pass:=MyDecrypt(FieldByName('User_pass').AsString,'jing');//------提取密码!
if Trim(Edit1.Text)=tmp_pass then
begin
Tmp_Name:=Trim(combobox1.Text);//----提取的姓名!
Frm_Main.ShowModal;
Frm_Logo.Close;
end
else
begin
Application.MessageBox('您输入的密码不正确,请重新输入!','图书管理系统',Mb_IconQuestion+Mb_ok);
Edit1.SetFocus;
Edit1.SelectAll;
end;
end;
end
else
begin
Application.MessageBox('请选择用户名!','图书管理系统',Mb_IconQuestion+Mb_ok);
end;
end;
程序里的一段,自己研究研究
StrUser,StrPsd:string;
begin
StrUser:=edit1.Text;
StrPsd:=edit2.Text;
ADODataSet1.Close;
ADODataSet1.CommandText:='select * from Tuser where UserName ='+
quotedstr(StrUser) +' and Pwd='+quotedstr(StrPsd);
ADODataSet1.Open;
if ADODataSet1.RecordCount<>0 then
begin
showmessage('a');//
end;
end;
StrUser,StrPsd:string;
begin
StrUser:=edit1.Text;
StrPsd:=edit2.Text;
ADODataSet1.Close;
ADODataSet1.CommandText:='select * from Tuser where UserName ='+
quotedstr(StrUser) +' and Pwd='+quotedstr(StrPsd);
ADODataSet1.Open;
if ADODataSet1.RecordCount<>0 then
begin
showmessage('a');//要实现的事件
end;
end;
我试用了一二楼的方法,都行,二楼的要将此字段另起别名。
var
s:string;
p:string;
begin
p:=edtpass.Text;
{adoquery1.close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select name,code,password from login_user where name='+#39+dbcombobox1.Text+#39);
adoquery1.Open;
//adoquery1.FieldByName('name').AsString:=dbcombobox1.Items.Text;
s:=adoquery1.fieldbyname('password').AsString;
//}//注释掉了。如果我将数据库中的字段改成可压缩的是不是就这样用?
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select name,code,ltrim(rtrim(password)) as 密码 from login_user where name='+#39+combobox1.Text+#39);
adoquery2.Open;
s:=adoquery2.Fieldbyname('密码').AsString;
if (p<>s) then
begin
messagedlg('密码错误!',mtConfirmation,[mbyes],0);
edtpass.Text:='';
edtpass.SetFocus;
end
else
begin
form2.show;
//adoquery1.close;
adoquery2.Close;
frmpass.Hide;
end;
end;
这是我目前用的,有比这再简便的吗?
procedure Tfrmsfkp.Button1Click(Sender: TObject);
var
strsql:string;
begin
adoquery1.Close;
adoquery1.SQL.Clear;
//strsql:='select date,xm,sl from mz11,mz22 where mz11.id=mz22.mz11_id ';
strsql:='SELECT date,mz11.id,mz11.fph,xm,price_item.name,sl,(retail_price/big_small),mz22.je,dr.name,dpt.name,login_user.name as czy from mz11,mz22,price_item,dr,dpt,login_user ';
strsql:=strsql+' where mz11.id=mz22.mz11_id and dr.id=mz11.dr and login_user.id=sf_op and price_item.id=mz22.yp_id and dpt.id=mz11.dpt_id ';
if trim(datetimetostr(Dtp1.Date ))<>'' then
strsql:=strsql+' between #'+datetimetostr(dtp1.DateTime)+'# and #'+datetimetostr(dtp2.DateTime)+'# '
else
showmessage('请选择查询日期!') ;
adoquery1.SQL.Add(strsql);
try
adoquery1.Open;
except
adoquery1.ExecSQL;
end;
end;
procedure Tfrmsfkp.FormCreate(Sender: TObject);
begin
dtp1.DateTime:=now;
dtp2.DateTime:=now;
end;
而且报错:---------------------------
Debugger Exception Notification
---------------------------
Project mainProject.exe raised exception class EOleException with message 不正常地定义参数对象。提供了不一致或不完整的信息'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
我只是将DateToStr改成了DateTimetoStr了啊
if trim(edit1.text)=trim(adoquery1.fieldbyname('欄位名').asstring)..........;
这一句中的MyDecrypt是对字符串进行加密,不用也可以这样
tmp_Pass:=FieldByName('User_Pass').AsString; Tmp_Name:=Trim(combobox1.Text);//----提取的姓名!这一句Tmp_name,自己可以申明一下
var
tmp_Name:String;就OK了!
procedure Tfrmpass.FormCreate(Sender: TObject);
var s1:string;
begin
s1:=adoquery2.Fieldbyname('name').AsString;
Next;
combobox1.Items.Add(s1);
end;
你的程序忘记循环啦:)
procedure Tfrmpass.FormCreate(Sender: TObject);
var s1:string;
begin
if adoquery2.active then
begin
adoquery2.first;
while not adoquery2.eof do
begin
s1:=adoquery2.Fieldbyname('name').AsString;
combobox1.Items.Add(s1);
Next;
end;
end;
end;