这样就可以了~~
if (data.qu_yhgl1.FieldByName('ID').asstring<>null) then
//修改处理if (data.qu_yhgl1.FieldByName('ID').AsString=null) then
//+1处理这个 or (data.qu_yhgl1.FieldByName('ID').AsString='')  不用了~~~~

解决方案 »

  1.   

    欢迎老千~~,
    老千,偶对null不了解
    究竟null与recrdcount=0有何区别
      

  2.   

    null是一条记录的字段值,recordcount是记录数目,他们使用的范围不同
      

  3.   

    data.qu_yhgl1.FieldByName('ID').AsString=null说明这个字段的值为空~也就是Null~相当于数据库中没有记录~~
    而你的recrdcount=0不可用~~因为好像如果结果是Null的也算是一条返回记录的~也就是recrdcount=1而不是等于0~~~~
      

  4.   

    用null比较明了,
    偶刚才被recorcount=0和null搅得乱了
    尤其记录为空时,居然recordcount还是1
    用null彻底判明了
      

  5.   

    好的,老千
    现在问题又来到了
    系统报错
    is not avilid integer value代码:
    procedure Tf_yhgl.Button1Click(Sender: TObject);
    var
    newnode:ttreenode;
    begin
    if  treeview1.selected.text='超级用户' then
        begin
        newnode:=treeview1.items.addchild(treeview1.selected,newname);
        newnode.imageindex:=0;
        newnode.selectedindex:=0;        data.qu_yhgl1.close;
            data.qu_yhgl1.sql.clear;
            data.qu_yhgl1.SQL.add('select min(id) as id from pass where flag='+#39+'0'+#39+'');
            data.qu_yhgl1.open;        data.qu_yhgl2.close;
            data.qu_yhgl2.sql.clear;
            data.qu_yhgl2.SQL.add('select * from pass');
            data.qu_yhgl2.open;       if (data.qu_yhgl1.FieldByName('ID').asstring<>null)  then
                begin
                   count1:=strtoint(data.qu_yhgl1.fieldbyname('id').asstring);
                   newname:='管理员'+inttostr(count1);
                   data.qu_yhgl3.close;
                   data.qu_yhgl3.sql.clear;
                   data.qu_yhgl3.SQL.add('update pass  set name=:name, passwd=:passwd, qx=:qx, alias=:alias, issuper=:issuper, flag=:flag');
                   data.qu_yhgl3.parambyname('name').asstring:=edit1.text;
                   data.qu_yhgl3.parambyname('passwd').asstring:=edit2.text;
                   data.qu_yhgl3.parambyname('qx').asstring:='111111111';
                   data.qu_yhgl3.parambyname('alias').asstring:='newname';
                   data.qu_yhgl3.parambyname('issuper').asstring:='y';
                   data.qu_yhgl3.parambyname('flag').asstring:='1';
                   data.qu_yhgl3.execsql;
                   edit1.text:='name'+inttostr(count1);
                   edit2.text:='passwd'+inttostr(count1);
                 end;
             if (data.qu_yhgl1.FieldByName('ID').AsString=null)   then
                 begin
                   count2:=data.qu_yhgl2.recordcount+1;
                   newname:='管理员'+inttostr(count2);
                   data.qu_yhgl4.close;
                   data.qu_yhgl4.sql.clear;
                   data.qu_yhgl4.SQL.add('insert into pass (id,name,passwd,qx,alias,issuper,flag) values (:value1,:value2,:value3,:value4,:value5,:value6,:value7)');
                   data.qu_yhgl4.parambyname('value1').asinteger:=count2;
                   data.qu_yhgl4.parambyname('value2').asstring:=edit1.text;
                   data.qu_yhgl4.parambyname('value3').asstring:=edit2.text;
                   data.qu_yhgl4.parambyname('value4').asstring:='111111111';
                   data.qu_yhgl4.parambyname('value5').asstring:='newname';
                   data.qu_yhgl4.parambyname('value6').asstring:='y';
                   data.qu_yhgl4.parambyname('value7').asstring:='1';
                   data.qu_yhgl4.execsql;
                   edit1.text:='name'+inttostr(count2);
                   edit2.text:='passwd'+inttostr(count2);
               end;
        end;
      end;
      

  6.   

    edit1.text:='name'+inttostr(count2);
                  edit2.text:='passwd'+inttostr(count2);这里??????
      

  7.   

    无法得到,系统运行过了,
    只是新建时出错,跳步后,显示上述
    偶估计是count
      

  8.   

    系统跳步后,的确是那里,
    但偶吧他们删了,则显示在了execsql行上
      

  9.   

    说一下这
    id,name,passwd,qx,alias,issuper,flag几个字段的类型~~~
      

  10.   

    问题确在此
    偶跟踪edit1,2
    发现:edit1,2没有被负值,而
    'name'+inttostr(count2);显示:inaccessable value
     
                  
      

  11.   

    是不是这里: 
            data.qu_yhgl2.close;
            data.qu_yhgl2.sql.clear;
            data.qu_yhgl2.SQL.add('select * from pass');
            data.qu_yhgl2.open;
    以及
    count2:=data.qu_yhgl2.recordcount+1;数据库此是为空,select没有结果
                        
      

  12.   

    'name'+inttostr(count2);是不是给Edit附值???如果是~~你看看Count2的在附值之前的数值是什么??
      

  13.   

    不会的呀~~数据库为空~~那个RecordCount应该是0~~你在看看data.qu_yhgl2.recordcount的值是多少呢!!
      

  14.   

    count仅被
    定义为integer
    没作其他处理
      

  15.   

    哈哈,偶好想找到问题了报错是:  '' is not avald integer value
    偶少看了:  ''
    估计是多写了
    代码如上,老千一块找呀
      

  16.   

    呵呵~~所以老牛!!你要判断~~
    如果那个数是Null~~就强制给他附值~~if Count2=null then Count2=1
      

  17.   

    不应该会是null把:
    count2:=data.qu_yhgl2.recordcount+1;
    至少为1
      

  18.   

    可是为什么到了那里为null呢???
    可能就是因为data.qu_yhgl2.recordcount为Null~~~
      

  19.   

    偶这么写,仍然不行 
     if (data.qu_yhgl1.FieldByName('ID').AsString=null)   then
                 begin
                   if data.qu_yhgl2.recordcount=null  then
                      count2:=1
                    else
                   count2:=data.qu_yhgl2.recordcount+1;
      

  20.   

    =null?
    在VB中是这样的isnull(xxxx)
    而且使用这个函数搞定:
    iif(isnull(xxxx),0,xxxx)
      

  21.   

    判断是否为空,应用TField得IsNull,另
      if data.qu_yhgl2.recordcount=null  then   //null换成零,
    count2:=1
                    
      

  22.   

    是那里的问题??if (data.qu_yhgl1.FieldByName('ID').AsString=null)  then
                begin
                  if data.qu_yhgl2.recordcount=null  then
                      count2:=1
                    else
                  count2:=data.qu_yhgl2.recordcount+1;
    这么写以后那里报错呢???????
      

  23.   

    仍然是:‘’is not……
    事实上,click一旦按下
    就跳出红X的提示,跳步后,
    再出现上述的
      

  24.   

    头大了~~~
    这个data.qu_yhgl2.recordcount怎么也不应该是null呀~~~
      

  25.   

    0偶也试了,同样
    楼上有人说用tfiled,有喜吗
      

  26.   

    if (data.qu_yhgl1.FieldByName('ID').AsString=null)  then
    begin
      count2:=1
    end
    else
      count2:=data.qu_yhgl2.recordcount+1;
      

  27.   

    老千
    这句对吗?
    data.qu_yhgl4.parambyname('value1').asinteger:=count2;
      

  28.   

    偶从报错语句上看的
    ''is not avalid integer value
    大概翻译一下
    ''不是正当的整形参数
      

  29.   

    'value1'是一个什么类型的????