我想做一个批量发卡的程序,为什么只有一条记录,
var
i:integer;
begin
for i:=strtoint(dbedit3.text) to strtoint(dbedit3.Text)+strtoint(edit1.Text) do
begin
dbedit4.Text:='未审批';
table1.Append;
table1.Refresh;
dbedit3.Text:=inttostr(strtoint(dbedit3.Text)+1);
end;
Next;
end;

解决方案 »

  1.   

    APPEND插入记录
    然后后面是修改记录。应该是append插入一个空记录吧
    所以只是显示一条记录
      

  2.   

    table1.Append;
    dbedit3.Text:=inttostr(strtoint(dbedit3.Text)+1);
    table1.Refresh;
      

  3.   

    table1.Append;
    ......
    table1.Post;
      

  4.   

    问题出在dbedit3.Text:=inttostr(strtoint(dbedit3.Text)+1);
    append后dbedit3.Text=???为空!!!
    应该记录初始值为j,然后dbedit3.Text:=inttostr(j+i);
      

  5.   

    sorry,刚才没看清楚就乱说,还没到这步,append再refresh就是添加不成功的。去掉refresh,然后用我上面说的 dbedit3.Text := i; 试试。
      

  6.   

    不要给DBEDIT赋值
    先APPEND,再FIELDBYNAME('XXXX').ASSTRING:='XXXXX',再POST
      

  7.   

    wrong: '' not a valid integer value
      

  8.   

    用这个试试:
    var
    i:integer;
    begin
    for i:=strtoint(dbedit3.text) to strtoint(dbedit3.Text)+strtoint(edit1.Text) do
    begin
    dbedit4.Text:='未审批';
    table1.Append;
    //table1.Refresh;
    dbedit3.Text:=inttostr(i+1);
    table1.post;
    end;
    //Next;
    end;
      

  9.   

    for i:=strtoint(dbedit3.text) to strtoint(dbedit3.Text)+strtoint(edit1.Text) do
    begin
    dbedit4.Text:='未审批';
    table1.Append;
    dbedit3.Field.AsInteger:=strtoint(dbedit3.Text)+1;
    end;
    table1.post;
      

  10.   

    这样话,dbedit3的text值在增加,i的值在增加,这不是一个死循环吗?!
      

  11.   

    将未审批dbedit4赋值放在append后面
      

  12.   

    zhjkzjf(我心永恒):请看清楚程序,呵呵
      

  13.   

    zhjkzjf(我心永恒):也许你说的是对的,其实我也是不赞同这样写的,但是改程序只能改到能用就行了。程序结果正确就行了。你说的其实没错,但是delphi在编译时已经把dbedit3当做固定值编译,程序结果就正确了,谢谢你的提醒。