可以在表结构中加入一个字段IS_Select(1表示已选择,0为没有选择也是默认值),接着在DBGrid中加入此字段,如是DBGridEH就更好了,还可能将字段IS_Select以checkbox的形式来显示。 选择完后就可能这样的SQL语句挑选出来,select * from tablename where is_select='1'
当然打印完后,要将IS_Select为1的记录清掉(IS_Select=0)。
各位大侠。我用以下代码实现了: procedure TForm1.Button1Click(Sender: TObject); var I: Integer; S: string; begin S := ''; for I := 0 to DBGrid1.SelectedRows.Count - 1 do begin DBGrid1.DataSource.DataSet.Book := DBGrid1.SelectedRows[I]; S := Format('%s or NAME=%s', [S, QuotedStr(DBGrid1.DataSource.DataSet.FieldByName('NAME').AsString)]); end; Delete(S, 1, Length(' or ')); DBGrid1.DataSource.DataSet.Filtered := False; DBGrid1.DataSource.DataSet.Filter := S; DBGrid1.DataSource.DataSet.Filtered := True; { TODO : 打印 } //恢复用 DBGrid1.DataSource.DataSet.Filter := ''; end;可我还有一个问题: 我想把选择的那几条记录的客户应付款(user_pay)合计一下。并显示在报表中,请各位大侠帮帮忙。在线等待赐教。.........
第一方法:利用sql语句将这些数据挑选出来,在报表中将数据指向该query控件即可。
第二方法:另建一表,将你挑选的记录导入到此表中,在报表中使用该数据即可。
选择完后就可能这样的SQL语句挑选出来,select * from tablename where is_select='1'
procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
S: string;
begin
S := '';
for I := 0 to DBGrid1.SelectedRows.Count - 1 do begin
DBGrid1.DataSource.DataSet.Book := DBGrid1.SelectedRows[I];
S := Format('%s or NAME=%s',
[S, QuotedStr(DBGrid1.DataSource.DataSet.FieldByName('NAME').AsString)]);
end;
Delete(S, 1, Length(' or '));
DBGrid1.DataSource.DataSet.Filtered := False;
DBGrid1.DataSource.DataSet.Filter := S;
DBGrid1.DataSource.DataSet.Filtered := True;
{ TODO : 打印 }
//恢复用 DBGrid1.DataSource.DataSet.Filter := '';
end;可我还有一个问题:
我想把选择的那几条记录的客户应付款(user_pay)合计一下。并显示在报表中,请各位大侠帮帮忙。在线等待赐教。.........