哎呀,真是的,查一下Help不就知道了。
count2:=data.qu_yhgl2.fieldbyname('id').AsInteger;

解决方案 »

  1.   

    这个还要看你的id在建数据库时是怎么定义的是把它定义成整型还是string,如果是整型的楼上的还可以如果是字符就不行了如果是字符型你就要花费的力气了,那你就要判断字字符是不是数字如果是的话就要用count2:=strtoint(data.qu_yhgl2.fieldbyname('id').asstring);否则就不能赋值
      

  2.   

    是数字,在paradox里面怎么定义integer,偶用long integer
    结果不能定长度
      

  3.   

    Paradox当然可以定义字符,用A类型,就可以定义长度了。
    long integer就4个字节,当然不用定义长度了。呵呵,没想到你也这么晚。
      

  4.   

    chechy师父,偶今天一晚上的代码,总是不行
    系统说:type  mismatch in exprition偶的代码:
    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) from pass where flag=0');
            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.recordcount=1 then
                 begin
                   count1:=strtoint(data.qu_yhgl2.fieldbyname('id').asstring);
                   newname:='管理员'+inttostr(count2);
                   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.fieldbyname('name').asstring:=edit1.text;
                   data.qu_yhgl3.fieldbyname('passwd').asstring:=edit2.text;
                   data.qu_yhgl3.fieldbyname('qx').asstring:='111111111';
                   data.qu_yhgl3.fieldbyname('alias').asstring:='newname';
                   data.qu_yhgl3.fieldbyname('issuper').asstring:='y';
                   data.qu_yhgl3.fieldbyname('flag').asstring:='1';
                   data.qu_yhgl3.execsql;
                   edit1.text:='name'+inttostr(count1);
                   edit2.text:='passwd'+inttostr(count1);
                 end;
             if data.qu_yhgl1.recordcount=0 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 (field1,field2,field3,field4,field5,field6,field7) values (value1,value2,value3,value4,value5,value6,value7)');
                   data.qu_yhgl4.parambyname('field1').value:='count1';
                   data.qu_yhgl4.parambyname('field2').value:=edit1.text;
                   data.qu_yhgl4.parambyname('field3').asstring:=edit2.text;
                   data.qu_yhgl4.parambyname('field4').asstring:='111111111';
                   data.qu_yhgl4.parambyname('field5').asstring:='newname';
                   data.qu_yhgl4.parambyname('field6').asstring:='y';
                   data.qu_yhgl4.parambyname('field7').asstring:='1';
                   data.qu_yhgl4.execsql;
                   edit1.text:='name'+inttostr(count2);
                   edit2.text:='passwd'+inttostr(count2);
            end;
        end;
      end;偶的数据库:
    id  name passwd  qx  alias  issuper  flag偶实在找不出虫了
      

  5.   

    错的一塌糊涂。我真服了你了。
    在写程序的时候,要多查在线帮助,它对你帮助更大。
    begin
      if data.qu_yhgl1.recordcount = 1 then
      begin
        count1 := strtoint(data.qu_yhgl2.fieldbyname('id').asstring);
        newname := '管理员' + inttostr(count2);
        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.recordcount = 0 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 (name,passwd,qx,alias,issuper,flag) values (:value1,:value2,:value3,:value4,:value5,:value6)');
        data.qu_yhgl4.parambyname('value1').asstring := 'count1';
        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('field7').asstring:='1';
        data.qu_yhgl4.execsql;
        edit1.text := 'name' + inttostr(count2);
        edit2.text := 'passwd' + inttostr(count2);
      end;
    end;
      

  6.   

    chechy师父,这一句,是什么意思
    //data.qu_yhgl4.parambyname('field7').asstring:='1';
    另外系统仍然说
    typs mismatch……
      

  7.   

    我的程序只是一个示例,实际上需要改写的,呵呵希望你能明白程序。
    我上一句是注释,实际上,你观察一下,SQL语句只有6个参数,不是7个。所以我注释了一句。
    另外,我觉得我的程序,每个参数对应的数据是错位的。
      

  8.   

    你的错误实在太CHILDISH
    SQL中根本就没有field7参数
    你为它赋值根本不就行
    所以必须去掉这句
    还有你仔细检查一下value
    和insert 中的字段的结应关系
    确实有错误
      

  9.   

    偶注意了一下,但仍然不得通过,
    不知道是不是逻辑错误?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) from pass where flag=0');
            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.recordcount=1 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.recordcount=0 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 (field1,field2,field3,field4,field5,field6,field7) values (value1,value2,value3,value4,value5,value6,value7)');
                   data.qu_yhgl4.parambyname('value1').asstring:='count1';
                   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;
      

  10.   

    这写错了
    data.qu_yhgl4.parambyname('value1').asstring:='count1';
    count1应为count2,该了,仍type……
      

  11.   

    insert的SQL语句压根就是错误的。你的PASS表难道字段名叫field1,field2,field3,field4,field5,field6,field7
      

  12.   

    是时候清一下了。
    data.qu_yhgl4.params.clear;
      

  13.   

    count2:=data.qu_yhgl2.fieldbyname('id').asinteger;直接这样就可以了
      

  14.   

    chechy,偶又错了
    xzfyes(dfsf), data.qu_yhgl4.params.clear;
    怎么回事?愿闻详情
    yxjjx(孤行者) ,count2是整形,由于数据库为空,或者
    没有空闲的地方(flag=0),需要+1的
      

  15.   

    chechy,偶要跳楼了,type……
    是不是这里错了
    count2:=data.qu_yhgl2.recordcount+1;
    两侧类型不对
                  
      

  16.   

    count2:=data.qu_yhgl2.recordcount+1没错
    你的设计思路确有问题
    一定要简化设计
    能不用SQL最好别用
    因为SQL和EDIT与POST
    比起来是较慢的
    也不要乱猜
    最好看看运行出错在什么地方
    照提示应该是SQL出错
      

  17.   

    老鱼,运行时,报错说type mismatch in exprition
    偶设断点都用不上
    偶觉得思路没有问题
    而且所有情况都考虑了
      

  18.   

    我也要晕倒了。
    拜托多东东脑子啊!
    data.qu_yhgl4.parambyname('value1').AsInteger:=count2;
      

  19.   

    同意CHECHY
    我也要晕菜了
    这么大的一篇代码
    只实现一段不可思议的功能
      

  20.   

    那你帮他写一下insert的SQL语句吧。很容易的。
      

  21.   

    Focus(老鱼) (2001-10-3 11:18:13)  得0分 
    ...........
    能不用SQL最好别用
    ..........这句话什么意思?
      

  22.   

    Delphi执行SQL语句怎么这么复杂啊?
      

  23.   

    就是这段代码,错的一塌糊涂。我就想不通,为什么学东西不能活学活用,非要死板硬套?data.qu_yhgl4.SQL.add('insert into pass (field1,field2,field3,field4,field5,field6,field7) values (value1,value2,value3,value4,value5,value6,value7)');
                  data.qu_yhgl4.parambyname('value1').asstring:='count1';
                  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';
      

  24.   

    to progame(呵呵呵(傻笑中) 
    因为sql是比较慢的
      

  25.   

    呵呵~~
    data.qu_yhgl4.SQL.add('insert into pass (field1,field2,field3,field4,field5,field6,field7) values (value1,value2,value3,value4,value5,value6,value7)');语句里面那有参数呀???????????
      

  26.   

    偶以前几乎没有过运行期间的sql
      

  27.   

    是啊,我这么写的。但是我不知道表结构,和程序逻辑,胡写。好像参数有些对不牢。
       data.qu_yhgl4.SQL.add('insert into pass (name,passwd,qx,alias,issuper,flag) values (:value1,:value2,:value3,:value4,:value5,:value6)');
        data.qu_yhgl4.parambyname('value1').asstring := 'count1';
        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('field7').asstring:='1';
      

  28.   

    Focus(老鱼):
    SQL比较慢?
    我在VB中直接使用ADO的Connection或command执行SQL语句是最快的
    其速度和在查询分析器中执行是一样的,只是多了传输语句的时间罢了
    搞不懂Delphi:(
      

  29.   

    To progame:
    Delphi写数据库很容易,当然简单的方法你不一定知道。
    To Focus:
    需要指出的是,Delphi向数据库提交数据都是用SQL,无论你用TTable、TQuery。无论你是否真的写了SQL。Delphi最终向数据库提交都是靠insert,update,delete三条SQL语句。
      

  30.   

    TO:progame(呵呵呵(傻笑中) ~~呵呵~~其实写一些存储过程可以更快的~~~
      

  31.   

    dim str as string
    str="insert into pass (name,passwd,qx.alinas,issuper,flag) values ('" _
      & "count1','" & edit1.text & "','" & edit2.text & "','11111111','newname'" _
      & ",'y','1')"
    ado.connection.execute str这就是VB的ADO做法了,仅供参考:)
      

  32.   

    我以前曾试过SQL的速度
    小批的数据速度不相上下
    但大批的绝对是SQL
    比edit&post&next慢
    主要可能是没有缓冲的缘故
      

  33.   

    偶的数据库表是这样的
    id    name    passwd    qx    alias    issuper     flag
      

  34.   

    TO:chechy(chechy) ~~我也不了解他现在的表是什么样子~~呵呵~~已经被修改的面目全非了~~TO:老牛!!麻烦给我们你的那个Pass表的结构以及字段的解释~~~~
      

  35.   

    千两:对于一条insert来说,用存储过程意义不大的,而且传递参数麻烦我用存储过程只是在大数据量操作时才用的
      

  36.   

    To progame
    你不觉得VB的字符串处理很笨拙吗?
    To Focus
    如果你有兴趣用SQL MONITOR跟踪,你会知道,即使使用Post语句,Delphi也是用SQL语句对数据库进行提交。
      

  37.   

    需要声明的是
    老牛用的是PARADOX
    不支持存储过程和高级SQL
      

  38.   

    id  纪录数
    name
    passwd
    qx:权限字符串
    alias:treeview上的text
    issuper:超级用户
    flag:纪录可用标志偶现在的代码:
    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) from pass where flag=0');
            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.recordcount=1 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.recordcount=0 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;
      

  39.   

    data.qu_yhgl4.SQL.add('insert into pass (id,name,passwd,qx,alias,issuper,flag)values ('+IntToStr(Count1)+','+#39+Edit1.Text+#39+','+#39+Edit2.Text+#39+','''111111111''','''newname''',''''y''','''1''')');
    看看是不是呀~~呵呵~~老牛!!字段的类型都是什么的??String??
      

  40.   

    begin
      if data.qu_yhgl1.recordcount = 1 then
      begin
        count1 := strtoint(data.qu_yhgl2.fieldbyname('id').asstring);
        newname := '管理员' + inttostr(count2);
        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.recordcount = 0 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('field7').asstring:='1';
        data.qu_yhgl4.execsql;
        edit1.text := 'name' + inttostr(count2);
        edit2.text := 'passwd' + inttostr(count2);
      end;
      

  41.   

    Focus(老鱼):大批的指的是什么?一次更改影响多个记录吗?
    那样的话也快呀,如果是多个操作可以这样写,是一样的:
    str="insert ......"
    str=str & " update ....."
    str=str & " delete ....."
    .......一次性执行:execute str这样速度还是很快,不会去多次建立连接和Open