原先界面:一个DBGrid1,一个TDataSource,一个adrqQuery1,DBGrid1中显示用户查询的内容,现在用户需要选择行打印,所以我在界面加了一个adrqPrint(TADOQuery控件),我写了以下代码:
  if dbgInfo.DataSource.DataSet.RecordCount <> dbgInfo.SelectedRows.Count then
  begin
    dbgInfo.DataSource.DataSet.First;
    adrqPrint.Clone(adrqQuery);
    adrqPrint.Open;
    for i := 0 to dbgInfo.DataSource.DataSet.RecordCount - 1 do
    begin 
      if dbgInfo.SelectedRows.CurrentRowSelected then
      begin
        adrqPrint.Append;
        adrqPrint.FieldByName('USERID').Value := dbgInfo.Fields[0].AsString;
        。//把所有字段赋值
        adrqPrint.Post;
      end;
      dbgInfo.DataSource.DataSet.Next;
    end;    frxDBDataset1.DataSet := adrqPrint;
  end;
  但是这样一编译就提示某个字段不能为NULL,我猜原因是不是因为Append的时候就已经加了一条空记录了,有没有别的方法可以既复制了数据又不会提示这种错误?