我设计如下登录程序procedure Tfm_main.N6Click(Sender: TObject);
begin //系统登录
if fm_login.ShowModal=mrok then
begin
if (fm_login.LabeledEdit1.Text='') or (fm_login.LabeledEdit2.Text='') then
begin
showmessage('用户信息输入有误,请重新登录');
end
else
begin //验证登录用户名称信息
if fm_login.tab_personal.Locate('姓名',fm_login.LabeledEdit1.Text,[loPartialKey]) then
begin //验证密码
if fm_login.tab_personal.FieldByName('密码').AsString=fm_login.LabeledEdit2.Text then
begin //权限附值
with fm_login.tab_personal do
begin
dbuser:=fieldbyname('姓名').asstring;
dbdate:=datetostr(date());
up1:=fieldbyname('系统').AsString;
up2:=fieldbyname('个性').AsString;
up3:=fieldbyname('业务').AsString;
up4:=fieldbyname('审核').AsString;
up5:=fieldbyname('仓管').AsString;
up6:=fieldbyname('出纳').AsString;
up7:=fieldbyname('会计').AsString;
showmessage('登录成功!');
end;
end
else
begin
showmessage('用户密码输入有误,请重新输入!');
end;
end
else
begin
showmessage('用户名称错误,请重新输入!');
end;
end;
end;
end;但run后出现错误类型为raise exception class EvariantypecastError with message 'Could not convert variant of type (Null) into type (string)'请问怎么解决?有兴趣的话我可以把程序发给你们.:)
begin //系统登录
if fm_login.ShowModal=mrok then
begin
if (fm_login.LabeledEdit1.Text='') or (fm_login.LabeledEdit2.Text='') then
begin
showmessage('用户信息输入有误,请重新登录');
end
else
begin //验证登录用户名称信息
if fm_login.tab_personal.Locate('姓名',fm_login.LabeledEdit1.Text,[loPartialKey]) then
begin //验证密码
if fm_login.tab_personal.FieldByName('密码').AsString=fm_login.LabeledEdit2.Text then
begin //权限附值
with fm_login.tab_personal do
begin
dbuser:=fieldbyname('姓名').asstring;
dbdate:=datetostr(date());
up1:=fieldbyname('系统').AsString;
up2:=fieldbyname('个性').AsString;
up3:=fieldbyname('业务').AsString;
up4:=fieldbyname('审核').AsString;
up5:=fieldbyname('仓管').AsString;
up6:=fieldbyname('出纳').AsString;
up7:=fieldbyname('会计').AsString;
showmessage('登录成功!');
end;
end
else
begin
showmessage('用户密码输入有误,请重新输入!');
end;
end
else
begin
showmessage('用户名称错误,请重新输入!');
end;
end;
end;
end;但run后出现错误类型为raise exception class EvariantypecastError with message 'Could not convert variant of type (Null) into type (string)'请问怎么解决?有兴趣的话我可以把程序发给你们.:)
dbdate:=datetostr(date());
up1:=fieldbyname('系统').AsString;
up2:=fieldbyname('个性').AsString;
up3:=fieldbyname('业务').AsString;
up4:=fieldbyname('审核').AsString;
up5:=fieldbyname('仓管').AsString;
up6:=fieldbyname('出纳').AsString;
up7:=fieldbyname('会计').AsString;
可能是这里有null,查看一下数据库
if not fieldbyname('系统').IsNull then
up1:=fieldbyname('系统').AsString;
1 Dlwxn(韩飞子)提议设置断点,还是不行,用F7、F8、F4都不行
2 boytomato(深爱一人叫颖的女孩!)提议 查一下是不是有的对象,不当释放时就释放了..但是我的窗体内不是动态生成和动态释放的,所以不行
3 我的各个字段都是有数值的
4 IDWB()我使用过fieldbyname().value 错误依然存在
5 gxd0001() 提示先以语名检测字段值是不否为空,但按添加语句后错误仍存在
设置一个变量从0开始在每一个执行语句后面加一条变量自增语句,最后看看到底问题出在第几句!