原先界面:一个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的时候就已经加了一条空记录了,有没有别的方法可以既复制了数据又不会提示这种错误?
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的时候就已经加了一条空记录了,有没有别的方法可以既复制了数据又不会提示这种错误?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货