同一列相同数据只打印一次,在出现不同的值之后再次打印 (100分)

  • 主题发起人 主题发起人 xxc
  • 开始时间 开始时间
X

xxc

Unregistered / Unconfirmed
GUEST, unregistred user!
同一列相同数据只打印一次,在出现不同的值之后再次打印,
如下形式:
材料代号 名称 单位
a001 a1 pcs
a002 a2
a003 a3
a004 a4 g
a005 a5 pcs
a006 a6
a007 a1 kg
a008 a1 pcs

TO :richgold 给个具体的例子,我是个初手
 
自定义一函数(布尔型),判别某一数据值是否其它数据相同,false不打印,true打印。
函数建议:类似计数器
如:function tform1.bj(sj:string;n:integer):boolean;
var z,f:integer;
a:integer;
begin
f:=table1.fields.acount;
z:=table1.fields.acount;
for z:=0 to table1.fields.acount-1do
begin
if sj=table1.fields then
dec(f);//记数器,即f:=f-1
end;
if f<a then
result:=false
else
result:=true;
end;

(sj:integer 于程序前var定义,函数供参考按实际修改)
 
对, 设一标志判断。
 
我是个初手:
是否能给个具体的例子,分不够可以再加,另外在请问一个问题,在DBGRID中如何
点鼠标右键的“选择全部”即可把所有数据都选中;
 
unit append_combobox;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, DBTables, Grids, DBGrids, ExtCtrls, DBCtrls;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
Table1: TTable;
DataSource1: TDataSource;
Button1: TButton;
Edit1: TEdit;
ComboBox1: TComboBox;
Button2: TButton;
Button3: TButton;
DBNavigator1: TDBNavigator;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
function bj(sj:string):boolean;
public
{ Public declarations }
end;

var
Form1: TForm1;
sj:string;
i:integer;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
table1.first;
sj:=table1.fields[0].asstring;
while not table1.eofdo
begin
if bj(sj)=true then
combobox1.items.append(sj);
table1.next;
sj:=table1.fields[0].asstring;
end;
end;

function tform1.bj(sj:string):boolean;
var z:integer;
a:integer;
begin
i:=combobox1.dropdowncount;
a:=combobox1.dropdowncount;
for z:=0 to i-1do
begin
if sj=combobox1.items[z] then
dec(i);
end;
if i<a then
result:=false
else
result:=true;
end;
 
the sceond probelem not enough detail
 
richgold
我要的是在预览和打印的时候达到这种效果,烦你好人做到底了;
 
后退
顶部