从0开始
for i := 0 to listbox2.Items.Count - 1 do
……

解决方案 »

  1.   

    出界了啊;
    从0开始的到Count - 1
      

  2.   

    for i:=0 to listbox2.Items.Count-1 do
      

  3.   

    我试过的,但是这样的话,我的DM.ADOTgd.Insert;就只有listbox中的最后一行才能insert到表中,前面二个呢?
      

  4.   

    楼上说了,Delphi一般都是0到count-1,记好了
      

  5.   

    我记好了的啊,不过我不是说这个,我是说这样的话,我的insert只能是listbox的最后一行的名字。
      

  6.   

    insert完了,是不是应该post啊,再试试看
      

  7.   

    adotable insert后 不需要 update 吗?
      

  8.   

    知道你的意思了,这样写就好了
    for i:=1 to listbox2.Items.Count do
                    begin
                            DM.ADOTgd.Close;DM.ADOTgd.Open;DM.ADOTgd.First;
                            DM.ADOTgd.Insert;
                            DM.ADOTgd.FieldByName('姓').asstring:=listbox2.Items[i];
                            DM.ADOTgd.post;
                    end;insert增加后,如果不post不保存了。
      

  9.   

    可是为什么我没有post也会保存最后一条呢?因为我以前发现用post 有出错,结果没有用它也能保存,所以才没有用的。
      

  10.   

    对不起,我从你的程序复制的,也写成1 to count,你改一下。你每次其实都增加了数据,但没有保存,所以每当你执行一次insert时,上一数据就会在内存中被释放,而最后一条是你在关闭数据库时,系统自动post的,所以你只看到了一条数据。
      

  11.   

    如果没有post的话,for语句把上一次的赋值覆盖了。DM.ADOTgd.FieldByName('姓').asstring只能保存一个值,所以就是你说的情况了。
      

  12.   

    可是我加了post后,数据是都保存成功了,但是为什么要有出错提示:没有在insert或edit的mode。我可是在insert 哟,为什么呢?以前也因为这个提示我才没有用post的。
      

  13.   

    我在我的机器上试过了,没有问题,我用的是prodax7数据库,在delphi试了,可以连续增加,你在找找别的原因吧.
      

  14.   

    for i := 0 to listbox2.Items.Count - 1 do
    从0开始算的.第3行它的itemindex=2.
      

  15.   

    不好意思,原来是因为我post了两次的原因。