我设计如下登录程序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)'请问怎么解决?有兴趣的话我可以把程序发给你们.:)

解决方案 »

  1.   

    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;
    可能是这里有null,查看一下数据库
      

  2.   

    在读取字段值之前检测此字段是否为空
    if not fieldbyname('系统').IsNull then
      up1:=fieldbyname('系统').AsString;
      

  3.   

    以上各位的方法我每一个我都试了,如下:
    1  Dlwxn(韩飞子)提议设置断点,还是不行,用F7、F8、F4都不行
    2  boytomato(深爱一人叫颖的女孩!)提议 查一下是不是有的对象,不当释放时就释放了..但是我的窗体内不是动态生成和动态释放的,所以不行
    3  我的各个字段都是有数值的
    4   IDWB()我使用过fieldbyname().value 错误依然存在
    5  gxd0001() 提示先以语名检测字段值是不否为空,但按添加语句后错误仍存在
      

  4.   

    对数据库中数据有Null值,请在程序中判断或者修改数据库中的值。
      

  5.   

    用try
    设置一个变量从0开始在每一个执行语句后面加一条变量自增语句,最后看看到底问题出在第几句!