FastReport打印格式设定问题,50分轻松拿(50分)

  • 主题发起人 主题发起人 saith
  • 开始时间 开始时间
S

saith

Unregistered / Unconfirmed
GUEST, unregistred user!
有 A B C D E F 六个字段
打印的效果如何设置为如下格式
A1 B1 C1 D1 E1 F1 | E2 F2 C2 D2 A2 B2
A3 B3 C3 D3 E3 F3 | E4 F4 C4 D4 A4 B4
......
An Bn Cn Dn En Fn | Em Fm Cm Dm Am Bm
 
将 Band 的 Columns 设为 2, 然后调整 ColumnsGap 可以调整中间的间隔
 
不是这样的,你没有看清我要的格式,两边的数据不对称的,
其实写SQL语句可以实现,但是那样就会失去灵活性,
我想通过设计报表的方式实现上面的打印格式,不知道那位大侠知道,
谢谢帮忙.[:D]
 
希望会的朋友帮帮,谢谢
 
置顶~呵呵
 
用子报表就容易解决了
 
这种问题怎样都不容易实现,
除非你在数据集中做文章
分两种情况
用两个集提供数据
 
我想知道,你用sql是怎么实现的,能不能告诉我,
我以前都是将数据写到另外一个临时表中
表结构是
A1 B1 C1 D1 E1 F1 A2 B2 C2 D2 E2 F2
然后再查询临时表打印。
谢谢
 
Select A1, B1, C1, D1, E1, F1,
A2=<TempColValue>, B2=<TempColValue>, C2=<TempColValue>,
D2=<TempColValue>, E2=<TempColValue>, F2=<TempColValue>
into #Result
FROM T1
UpDate #Result SET A2=A, B2=B, C2=C D2=D, E2=E, F2=F
Select * from #Result
Drop Table #Result
 
求知学人:
大概意思就是这样
 
Select AutoID=IDENTITY(INT,1,1),A1, B1, C1, D1, E1, F1,
A2=<TempColValue>, B2=<TempColValue>, C2=<TempColValue>,
D2=<TempColValue>, E2=<TempColValue>, F2=<TempColValue>
into #Result
FROM T1
Selecte * into from #Result
UpDate #Result SET A2=A1, B2=B1, C2=C1 D2=D1, E2=E1, F2=F1
FROM #Result A Inner Join #Result1 B ON A.AutoID=B.AutoID-1
Delete #Result where AutoID/2=0
Select * from #Result
Drop Table #Result
应该是这样
 
FastReportToDataBase
在网上找了很久,没有找到合适的代码,最后自己干脆做了一下
代码共享如下,大家研究一下,谁有更好的,能否给小弟一份,或是有什么指点的,
烦请给我发邮件,zjw_0916@126.com
------------创建储存数据表----------------
Create Table Table1
(
A001 INT IDENTITY(1,1) Primary Key,
A002 varchar(50) NOT NULL,---报表名称
A003 Image NOT NULL, --报表数据
A004 bit -- 默认打印
)
GO
Alter Table Table1 WITH NOCHECK
ADD CONSTRAINT UX_A002 UNIQUE NONCLUSTERED(A002)
Alter Table Table1 WITH NoCHECK
ADD CONSTRAINT DF_A004 DEFAULT 0 For A004
Create Trigger upd_Table1
ON Table1 For UPDATE
AS
begin
Declare @Flags bit,@ID int

IF UPDATE(A004)
begin
Select @Flags=A004,@ID=A001 From Inserted
IF @Flags=1
begin
UpDate Table1 Set A004=0
Update Table1 Set A004=1 where A001=@ID
end
end
end
//-------------报表存储相关函数-----------------
FFileName1,FFileName: string; //临时路径
ReportNo: Integer; //报表
procedure GetTempFileName; //获取临时路径
procedure LoadReport(ReportNo: Integer); //加载报表
procedure SetTemplet(Flags: Boolean); //设置模板
procedure SavetoDateBase(SaveAs: Boolean;
ReportNo: Integer); //保存模板到数据库
function LoadTemplet: Integer; //加载模板
//--------------报表存储相关函数----------------
procedure TFR_MakePool1.GetTempFileName;
var
Path: array[0..MAX_PATH - 1] of char;
begin
GetTempPath(MAX_PATH, Path);
FFileName := string(Path);
FFileName1 := FFileName;
FFileName:= FFileName + IntToStr(GetTickCount) + '.fr3';
end;

procedure TFR_MakePool1.LoadReport(ReportNo: Integer);
begin
if ReportNo <> 0 then
begin
ExecSql(FC_DM.qry_Com,'SELECT * FROM Table1 WHERE A001='+IntToStr(ReportNo));
if not FC_DM.qry_Com.IsEmpty then
begin
TBlobField(FC_DM.qry_Com.FieldByName('A003')).SaveToFile(FFileName1+FC_DM.qry_Com.FieldByName('A002').AsString+
'.fr3');
frxReport1.LoadFromFile(FFileName1+FC_DM.qry_Com.FieldByName('A002').AsString+ '.fr3');
end;
end;
end;

function TFR_MakePool1.LoadTemplet: Integer;
begin
Result := 0;
ExecSql(FC_DM.qry_Com,'SELECT Top 1 * FROM Table1 where A004 = 1');
if not FC_DM.qry_Com.IsEmpty then
Result := FC_DM.qry_Com.Fields[0].AsInteger
else
begin
ExecSql(FC_DM.qry_Com,'SELECT Top 1 * FROM Table1');
if not FC_DM.qry_Com.IsEmpty then
Result := FC_DM.qry_Com.Fields[0].AsInteger;
end;
end;

procedure TFR_MakePool1.SavetoDateBase(SaveAs: Boolean;
ReportNo: Integer);
var
SaveDialog : TSaveDialog;
UpDateFlags: Boolean;
begin
UpDateFlags := False;
frxReport1.SaveToFile(FFileName);
ExecSql(FC_DM.qry_Com1,' Select Top 1 * From Table1 Where A001='''+IntToStr(ReportNo)+'''');
if FC_DM.qry_Com1.IsEmpty or SaveAs then
try
SaveDialog := TSaveDialog.Create(nil);
SaveDialog.DefaultExt := 'fr3';
SaveDialog.Filter := frxResources.Get('dsRepFilter');
if frxCompressorClass <> nil then
SaveDialog.Filter := SaveDialog.Filter + '|' + frxResources.Get('dsComprRepFilter');
if SaveDialog.Execute then
begin
FC_DM.qry_Com1.Append;
FC_DM.qry_Com1.FieldByName('A002').AsString:=GetSingeName(SaveDialog.FileName);
UpDateFlags := True;
end;
finally
FreeAndNil(SaveDialog);
end
else
begin
FC_DM.qry_Com1.Edit;
UpDateFlags := True;
//FC_DM.qry_Com1.FieldByName('A002').AsString:=FileName;
end;
if UpDateFlags then
begin
TBlobField(FC_DM.qry_Com1.FieldByName('A003')).LoadFromFile(FFileName);
FC_DM.qry_Com1.Post;
ShowMsg(self, GetVariantCaption('gc_Prompt', '提示'), GetVariantCaption('gc_SaveSuccess', '保存成功!'), MB_OK,
MB_ICONASTERISK);
end;
end;

procedure TFR_MakePool1.SetTemplet(Flags: Boolean);
var
S : String;
begin
if Flags then
begin
S := Trim(dxLoadFromTemp.Text);
if S='' then
ReportNo:=0
else
ReportNo:=StrToInt(S);
end else
begin
ReportNo := LoadTemplet;
end;
LoadReport(ReportNo);
end;

--------使用方法-----------
function TFR_MakePool1.frxDesigner1SaveReport(Report: TfrxReport;
SaveAs: Boolean): Boolean;
begin
inherited;
Result :=false;
SavetoDateBase(SaveAs,ReportNo);
Result:=True;
if FileExists(FFileName) then
DeleteFile(FFileName);
end;
 
欢迎大家讨论!
 
后退
顶部