TO cqwty(笨小孩)
不好意思,你试过了吗?
你看,这个表是存储的StringGrid里的内容,根本就不是按固定的字段格试走的,而表里边的字段名只是一个意义上的像征,也就是说,它有可能字段名是姓名,但是实际上存储的却是"管理学院"几个字,所以说,它一切都是以StringGrid服务的,而不是常规上的表;这和你导入Execl的区别是什么?是时间上的节约和资源上的节约,不过,你自己也可以自己新的方法;
with frmwsqkprn1.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('delete from wspbqk1');
execsql;
close;
sql.Clear;
sql.Add('select * from wspbqk1');
open;
end;
with frmwsqkprn1.ADOQuery1 do
begin
for i:=1 to frmwsqkliul.StringGrid1.RowCount-1 do
begin
append;
fieldbyname('bianhao').asstring:=trim(stringgrid1.Cells[0,i]);
fieldbyname('pbtime').asstring:=trim(stringgrid1.Cells[1,i]);
fieldbyname('zdefen').asstring:=trim(stringgrid1.Cells[2,i]);
fieldbyname('mingci').asstring:=trim(stringgrid1.Cells[3,i]);
post;
end;
updatebatch;
first;
end;
for j:=0 to 22 do // 见上
begin
for i:=0 to 7 do
begin
QRShape[j,i]:=TQRShape.Create(QRBRep1);
with QRShape[j,i] do
begin
Parent:=DetailBand1;
Left:=i*92;
Top:=j*24;
Height:=25;
Width:=93;
Enabled:=True;
Visible:=True;
end;
QRLabel[j,i]:=TQRLabel.Create(QRBRep1);
with QRLabel[j,i] do
begin
Parent:=DetailBand1;
Left:=i*92+2;
Top:=j*24+6;
Height:=16;
Width:=90;
Alignment:=TaCenter;
AutoSize:=True;
Caption:='';
Enabled:=True;
Visible:=True;
end;
end;
{
******************
这里加入
if (j<>0) and ((j mod 22)=0) then
quickRep1.NewPage; //运行时出现非法调用错误
****************************
}
end;
QRLabel[0,0].Caption:='序号';
QRLabel[0,1].Caption:='帐号';
QRLabel[0,2].Caption:='销帐日期';
QRLabel[0,3].Caption:='话费月份';
QRLabel[0,4].Caption:='话费';
QRLabel[0,5].Caption:='上次余额';
QRLabel[0,6].Caption:='本次余额';
QRLabel[0,7].Caption:='滞纳金';
xzjlst:=1;
end;
procedure TQRBRep1.QRBRepNeedData(Sender: TObject; var MoreData: Boolean);
var
i,j: Integer;
begin
if xzjlst > xzjlsn then // xzjlsn为全局变量,为要打印的StringGrid行数
MoreData:=False
else
begin
MoreData:=True;
for j:=1 to 22 do // 同上
begin
for i:=0 to 7 do
begin
if xzjlst > xzjlsn then
QRLabel[j,i].Caption := ''
else
QRLabel[j,i].Caption:=QRBankForm.StringGrid1.Cells[i,xzjlst]; // 打印当前行对应的数据
end;
end;
Inc(xzjlst);
end;
end;
end;
end.