Delphi的最新Crystal XI组件是为Delphi 7发布的.该VCL组件在D2007中编译,但在运行时给出了错误.在Delphi 2007应用程序中显示数据库连接的Crystal Report的最佳方法是什么?
解决方法
这是我发现的使用ActiveX的解决方案:
首先,注册Active X控件,如下所示:
在Delphi中,选择Component – >导入组件
单击“类型库”,单击“下一步”
选择“Crystal ActiveX Report Viewer Library 11.5”
选择你想要的任何调色板页面(我选择了“数据访问”)
选择导入位置
退出向导
... uses CrystalActiveXReportViewerLib11_5_TLB,OleAuto; ... procedure TForm1.Button1Click(Sender: TObject); var cry : TCrystalActiveXReportViewer; oRpt,oApp : variant; i : integer; frm : TForm; begin cry := TCrystalActiveXReportViewer.Create(Self); oApp := CreateOleObject('CrystalRuntime.Application'); oRpt := oApp.OpenReport('c:\my_report.rpt',1); for i := 1 to oRpt.Database.Tables.Count do begin oRpt.Database.Tables[i].ConnectionProperties.Item['User ID'] := 'username'; oRpt.Database.Tables[i].ConnectionProperties.Item['Password'] := 'password'; end; frm := TForm.Create(Self); try cry.Parent := frm; cry.Align := alClient; cry.ReportSource := oRpt; cry.ViewReport; frm.Position := poOwnerFormCenter; frm.ShowModal; finally FreeAndNil(frm); end; //try-finally end; procedure TForm1.btnExportClick(Sender: TObject); var cry : TCrystalActiveXReportViewer; oRpt,oApp : variant; i : integer; begin //Export the report to a file cry := TCrystalActiveXReportViewer.Create(Self); oApp := CreateOleObject('CrystalRuntime.Application'); oRpt := oApp.OpenReport(c_DBRpt,1); for i := 1 to oRpt.Database.Tables.Count do begin oRpt.Database.Tables[i].ConnectionProperties.Item['User ID'] := 'username'; oRpt.Database.Tables[i].ConnectionProperties.Item['Password'] := 'password'; end; oRpt.ExportOptions.FormatType := 29; //excel 8 oRpt.ExportOptions.diskFileName := 'c:\output.xls'; oRpt.ExportOptions.DestinationType := 1; //file destination //Export(False) => do NOT prompt. //Export(True) will give runtime prompts for export options. oRpt.Export(False); end;
如果你使用这个方法,那么this (rather dense) reference将会有所帮助,特别是因为Intellisense不适用于像这样的Ole对象.
编辑:引用的原始链接断开,因此我将其更改为指向新的(从2009年12月15日起生效).如果新的那个破了,那么Google should be able to find it.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。