如题。
登陆代码如下
procedure TLoginFrm.BitBtn1Click(Sender: TObject);
begin //输入为空判断
if edit1.Text='' then
begin
ShowMessage('请输入用户名!');
edit1.SetFocus;
end
else //打开数据库TUser表
begin
with datamodule1 do
begin
q_login.Close;
q_login.SQL.Clear;
q_login.SQL.Add('select * from TUser');
q_login.sql.Add('where U_ID=:id and U_PASSWORD=:pw');
q_login.Open;if edit1.Text<>q_login.paramByName('id').AsString then //判断用户名
begin
showmessage('请输入正确的用户名!');
edit1.SetFocus;
end
else
if maskedit1.Text<>q_login.Parambyname('pw').asstring then //判断口令
begin
showmessage('请输入正确的密码!');
maskedit1.SetFocus;
end
else
beginloginfrm.hide;
application.CreateForm(tmainfrm,mainfrm);
end;
出错信息是:field 'id'is of a unknow type.
高手帮忙!!!
登陆代码如下
procedure TLoginFrm.BitBtn1Click(Sender: TObject);
begin //输入为空判断
if edit1.Text='' then
begin
ShowMessage('请输入用户名!');
edit1.SetFocus;
end
else //打开数据库TUser表
begin
with datamodule1 do
begin
q_login.Close;
q_login.SQL.Clear;
q_login.SQL.Add('select * from TUser');
q_login.sql.Add('where U_ID=:id and U_PASSWORD=:pw');
q_login.Open;if edit1.Text<>q_login.paramByName('id').AsString then //判断用户名
begin
showmessage('请输入正确的用户名!');
edit1.SetFocus;
end
else
if maskedit1.Text<>q_login.Parambyname('pw').asstring then //判断口令
begin
showmessage('请输入正确的密码!');
maskedit1.SetFocus;
end
else
beginloginfrm.hide;
application.CreateForm(tmainfrm,mainfrm);
end;
出错信息是:field 'id'is of a unknow type.
高手帮忙!!!
解决方案 »
- 有挑战性的问题,欢迎大家和我一起探讨一下。关于用OLE方式封装WPS时合并菜单的问题(ActiveForm,OCX)
- 关于Delhpi读取注册表信息
- 要随机打乱Form上面的6个label位置容易吗?
- 关于TreeView中更改Text和Image的问题
- 帮忙救命呀
- 要把图片入库,数据库字段用什么类型
- 关于delphi7中的发送UDP包的问题,急,高分咨询
- 散分了!那里有 boundchecker for delphi(我用的delphi5.5) 下载??
- 为何 Findwindow() 在 Win2000 的服务程序中返回值为0?
- 一个关于timer的问题!请各位帮忙!!
- 还不能发帖子吗?
- 我要用sql创建access数据库表,要求创建一个自动编号字段.怎么做?在线等...
('where U_ID=:id and U_PASSWORD=:pw');
换成
('where U_ID='+''''+edit1.text+''''+' and U_PASSWORD='+''''+edit2.text+'''');
补充如下:如果写成'where U_ID=:id and U_PASSWORD=:pw',必须动态生成 paramCreateParam()
q_login.parambyname('U_ID').asstring 也行不通。
出现同样的错误
field 'U_ID'is of a unknow type.
我想知道parambyname()是不是一定要参数。原数据库里的字段名不能做他的参数吗?
整个程序逻辑有问题.....
你只能判断某个用户名存不存在,即判断记录数......
loginForm: TloginForm;
loginNumber:integer;implementation
uses mainUnit;
{$R *.dfm}procedure TloginForm.FormCreate(Sender: TObject);
begin
loginNumber:=0;
end;procedure TloginForm.Button1Click(Sender: TObject);
var
username:string;
password:string;
begin
loginForm.modalresult:=0;
username:=trim(edit1.Text);
password:=trim(edit2.Text);
if adotable1.Active=false then
begin
adotable1.Active:=true;
end;if adotable1.Locate('loginid', username, [loPartialKey])=False then
Begin
Application.MessageBox('ÎÞ´ËÓû§£¡','ϵͳÌáʾ',MB_OK+MB_ICONERROR);
edit1.Clear;
edit2.Clear;
edit1.SetFocus;
inc(loginNumber);
end
else if adotable1.FieldByName('PassWord').AsString=Password then
loginForm.ModalResult:=idok
else
begin
Application.MessageBox('ÃÜÂë´íÎó£¡','ϵͳÌáʾ',MB_OK+MB_ICONERROR);
edit1.Clear;
edit2.Clear;
edit1.SetFocus;
inc(loginNumber);
end;
if loginNumber=3 then
loginForm.ModalResult:=2;
end;procedure TloginForm.Button2Click(Sender: TObject);
begin
loginForm.ModalResult:=mrcancel;
end;end.
如果不用parambyname。可以用什么?我记得以前就是用tquery组件来做的
现在忘了。我用fieldbyname,只能匹配表里的当前活动记录,也就是最上面一条记录。
哪位大哥可以帮忙?小弟高分相送。(用bde)
begin //输入为空判断
if edit1.Text='' then
begin
ShowMessage('请输入用户名!');
edit1.SetFocus;
end
else //打开数据库TUser表
begin
with datamodule1 do
begin
q_login.Close;
q_login.SQL.Clear;
q_login.SQL.Add('select * from TUser');
q_login.sql.Add('where U_ID=:id and U_PASSWORD=:pw');
parameters.parabyname('id').value:=''
parameters.parabyname('pw').value:=''
q_login.Open;
begin
showmessage('用户不存在')
edit1.setfocus;
exit;
end
else
if edit2.text<>fieldbyname('password').asstring then
begin
showmessage('密码不正确!');
exit;
end;
close;
end;
我的是接 Cheney(切尼) 的来的...