while ADODataSet1.Recordset.EOF =False do
  begin
    Inc(i);
    ListItem:=ListView2.Items.Add ;
    ListItem.Caption :=IntToStr(i);
    ListItem.SubItems.Add(ADODataSet1.FieldValues ['username']);
    ListItem.SubItems.Insert(1,ADODataSet1.FieldValues ['type']);
    ListItem.SubItems.Insert(2,ADODataSet1.FieldValues ['score']);
    ADODataSet1.Recordset.MoveNext ;
  end;以上代码运行后为何在列表中看到若干项记录都是数据库表中的第一条记录?

解决方案 »

  1.   

    ADODataSet1.First;
    while not ADODataSet1.EOF do
      begin
        Inc(i);
        ListItem:=ListView2.Items.Add ;
        ListItem.Caption :=IntToStr(i);
        ListItem.SubItems.Add(ADODataSet1.FieldValues ['username']);
        ListItem.SubItems.Insert(1,ADODataSet1.FieldValues ['type']);
        ListItem.SubItems.Insert(2,ADODataSet1.FieldValues ['score']);
        ADODataSet1.Next;
      end;
    这样应该可以,MoveNext有些数据库不支持。