-5

以下代码工作正常,但不知道为什么它省略了第一条记录。但是,如果删除此行 ListViewMain.Items.Clear; 在第二次调用时,它会正确显示所有记录。我正在使用 SQLite。

procedure TFMain.BtnUpCommingClick(Sender: TObject);
var t: string   ;
ListItem: TListViewItem;
FullName: TField;
SimNumber: TField;
begin
  ChangeTabAction2.ExecuteTarget(Self);

  t := DateToStr(Tomorrow);

  FDQueryUpComming.SQL.Text:='Select * from TCustomer Where PackageDate = :PackageDate';
  FDQueryUpComming.ParamByName('PackageDate').AsString := t;
  FDQueryUpComming.Open;
  if FDQueryUpComming.RecordCount = 0 then Exit;

  FullName:= FDQueryUpComming.FieldByName('CName');
  SimNumber:= FDQueryUpComming.FieldByName('CSim');
  FDQueryUpComming.First;   // move to the first record
  ListViewMain.Items.Clear;
  ListViewMain.BeginUpdate;
  try
    while(not FDQueryUpComming.Eof)do begin
      ListItem:= ListViewMain.Items.Add;
      ListItem.Text:= FullName.AsString;
      ListItem.Detail:= SimNumber.AsString;
      FDQueryUpComming.Next;
    end;
  finally
    ListViewMain.EndUpdate;
  end;
end;
4

1 回答 1

-2

您的代码似乎没有错误,但是添加到列表视图或表格中的问题是什么?

您是否在 Windows 和 Android 上或仅在 Android 上测试过同样的问题?

请尝试以下代码:

procedure TFMain.BtnUpCommingClick(Sender: TObject);
var t: string   ;
ListItem: TListViewItem;
FullName: TField;
SimNumber: TField;
begin
  ChangeTabAction2.ExecuteTarget(Self);

  t := DateToStr(Tomorrow);

  FDQueryUpComming.SQL.Text:='Select * from TCustomer Where PackageDate = :PackageDate';
  FDQueryUpComming.ParamByName('PackageDate').AsString := t;
  FDQueryUpComming.Open;
  if FDQueryUpComming.RecordCount = 0 then Exit;

  ListViewMain.BeginUpdate;
  ListViewMain.Items.Clear;
  try
    FDQueryUpComming.First;   // move to the first record
    repeat
      ListItem:= ListViewMain.Items.Add;
      ListItem.Text:= FDQueryUpComming.FieldByName('CName').AsString;
      ListItem.Detail:= FDQueryUpComming.FieldByName('CSim').AsString;
      FDQueryUpComming.Next;
    until FDQueryUpComming.Eof;
  finally
    ListViewMain.EndUpdate;
  end;
end;

在“重复”之后的第一行添加断点,并检查问题是否来自数据库/Firedac 或 ListView 组件。

于 2017-08-27T17:48:17.303 回答