如何在VB中調用Crystal Report中的Rpt檔而不是DSR檔. 希望提供Sample,在線等待..急..一定給分

jxxiaojian 2002-04-23 10:59:37
如何在VB中調用Crystal Report中的Rpt檔而不是DSR檔. 希望提供Sample,
...全文
102 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxxiaojian 2002-04-23
  • 打赏
  • 举报
回复
不好意思剛剛被我給試出來..
不過你給我的資料還是蠻有用..
謝謝..
wangsitao 2002-04-23
  • 打赏
  • 举报
回复
只能详细说明一下我的程序的API,你最好自己查一下CrystalReport的开发文档资料在CrystalReport8.0的安装目录下有

以下方法必须用CrystalReport编辑生成文件而不使用CrystalReport对象

1)PEOpenEngine打开引擎
无参数,有返回值 =1成功=0失败
2)EOpenPrintJob设定打印文件
jobnum = PEOpenPrintJob(App.Path + "\ducu.rpt")
参数为字符串 传入你的.RPT文件的全路径,返回值 jobnum为工作队列号
3)PESelectPrinterEX选择打印机
参数为PEOpenPrintJob的返回值
有返回值 =1成功=0失败
result = PESelectPrinterEX(jobnum)
4)得到.RPT文件中使用到的TABLE表的数量
tablecount = PEGetNTables(jobnum)
参数为PEOpenPrintJob的返回值
返回值TABLE表的数量
5)PESetNthTableLogOnInfo设定ODBC名
用PEGetNthTableLogOnInfo得到PELogOnInfo结构体
result = PEGetNthTableLogOnInfo(jobnum, i, PELogOnInfo1)
参数1为PEOpenPrintJob的返回值
参数2为第几个TABLE表(0是第一个)
参数3为PELogOnInfo结构体,是传出参数,不必赋值
有返回值 =1成功=0失败
PELogOnInfo1.ServerName = "MDB" + Chr(0)
"MDB"是我作成的ODBC连接的名称
result = PESetNthTableLogOnInfo(jobnum, i, PELogOnInfo1, 1)
参数1为PEOpenPrintJob的返回值
参数2为第几个TABLE表(0是第一个)
参数3为PELogOnInfo结构体,从PEGetNthTableLogOnInfo得到
参数4忘了,好象传1就可以了

6)result = PESetMargins(jobnum, RepLeft, RepRight, RepTop, RepBottom)设定报表的Margin
参数1为PEOpenPrintJob的返回值
参数2为报表左顶点X轴的值
参数3为报表右下点X轴的值
参数4报表左顶点Y轴的值
参数5报表右下点Y轴的值
有返回值 =1成功=0失败

7)PESetFormula设定报表文件参数值
formulacount = PEGetNFormulas(jobnum)得到.RPT文件Formula的数量
参数1为PEOpenPrintJob的返回值
返回值为Formula的数量
result = PEGetNthFormula(jobnum, FormulaN, nameHandle, nameLength, TextHandle, TextLength)
参数1为PEOpenPrintJob的返回值,FormulaN是第几个Formula(0是第一个)其他是传出参数,不必赋值
有返回值 =1成功=0失败
formulaName = String$(nameLength, 0)
result = crvbHandleToBStr(formulaName, nameHandle, nameLength)
此时formulaName为.RPT文件第FormulaN个Formula的名称,有返回值 =1成功=0失败
FormulaText="'"+"A"+"'"
result = PESetFormula(jobnum, formulaName, FormulaText)将A传给名称为formulaName的Formula
参数1为PEOpenPrintJob的返回值, 参数2为Formula的名称,参数3为Formula的值(字符)
有返回值 =1成功=0失败


8)PEDiscardSavedData使报表文件重新取数据
result = PEDiscardSavedData(jobnum)
参数1为PEOpenPrintJob的返回值, 有返回值 =1成功=0失败

9)PEOutputToWindow报表文件以Window打开
result = PEOutputToWindow(jobnum, "貸出期限超過者一覧", CW_USEDEFAULT, _
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, _
CW_USEDEFAULT + WS_BORDER + WS_SYSMENU + WS_VISIBLE + WS_MAXIMIZE, printhwnd)
参数1为PEOpenPrintJob的返回值,
参数2为WINDOW的标题,
参数3,4,5,6传就可以了
参数7为WINDOW的风格,
参数8为传出值,LONG型窗口句柄,
有返回值 =1成功=0失败

Dim PEWOptions As PEWindowOptions
PEWOptions.StructSize = PE_SIZEOF_WINDOW_OPTIONS
PEWOptions.hasGroupTree = 0
PEWOptions.canDrillDown = 0
PEWOptions.hasNavigationControls = 1
PEWOptions.hasCancelButton = 0
PEWOptions.hasPrintButton = 1
PEWOptions.hasExportButton = 0
PEWOptions.hasZoomControl = 1
PEWOptions.hasCloseButton = 1
PEWOptions.hasProgressControls = 1
PEWOptions.hasSearchButton = 1
PEWOptions.hasPrintSetupButton = 1
PEWOptions.hasRefreshButton = 1
PEWOptions.showToolbarTips = 1
PEWOptions.showDocumentTips = 0
PEWOptions.hasLaunchButton = 0
result = PESetWindowOptions(jobnum, PEWOptions)设定预览窗口上的控件
其他与报表文件输出到打印机一样


PEOutputToPrinter报表文件输出到打印机
result = PEOutputToPrinter(jobnum, Printer.Copies)
参数1为PEOpenPrintJob的返回值,参数2为印刷数量, 有返回值 =1成功=0失败

Dim PEPOptions As PEPrintOptions
PEPOptions.StructSize = PE_SIZEOF_PRINT_OPTIONS
result = PEGetPrintOptions(jobnum, PEPOptions)
PEPOptions.StructSize = PE_SIZEOF_PRINT_OPTIONS
PEPOptions.nReportCopies = nReportCopies报表印刷数量
PEPOptions.StartPageN = StartPageN印刷开始页
PEPOptions.stopPageN = stopPageN印刷结束页

PEPOptions.collation = PE_DEFAULTCOLLATION
result = PESetPrintOptions(jobnum, PEPOptions)设定打印式样

Dim PESOptions As PESectionOptions
Dim code As Integer

PESOptions.StructSize = PE_SIZEOF_SECTION_OPTIONS
PESOptions.Visible = PE_UNCHANGED
PESOptions.NewPageBefore = PE_UNCHANGED

If systotal2.Reg1.System.Other.Tokusoku = 0 Then
PESOptions.NewPageAfter = 1
Else
PESOptions.NewPageAfter = 0
End If
PESOptions.KeepTogether = PE_UNCHANGED
PESOptions.SuppressBlankSection = PE_UNCHANGED
PESOptions.ResetPageNAfter = PE_UNCHANGED
PESOptions.PrintAtBottomOfPage = PE_UNCHANGED
PESOptions.backgroundColor = PE_UNCHANGED_COLOR
PESOptions.underlaySection = PE_UNCHANGED
PESOptions.showArea = PE_UNCHANGED
PESOptions.freeFormPlacement = PE_UNCHANGED
PESOptions.reserveMinimumPageFooter = PE_UNCHANGED
code = PE_SECTION_CODE(PE_SECT_GROUP_FOOTER, 0, 0)
result = PESetSectionFormat(jobnum, 5000, PESOptions)设定REPORT式样



10)PEStartPrintJob打印报表
result = PEStartPrintJob(jobnum, True)
参数1为PEOpenPrintJob的返回值, 有返回值 =1成功=0失败

11)PEClosePrintJob关闭打印文件
result = PEClosePrintJob(jobnum)
参数1为PEOpenPrintJob的返回值, 有返回值 =1成功=0失败

12PECloseEngine关闭引擎
无参数,有返回值 =1成功=0失败


内容概要:本文系统研究了开关频率大于谐振频率(fs>fr)工况下,移相混合控制LLC谐振变换器在低压增益区域的工作特性,深入分析其在变频与移相结合控制模式下的调制机理、工作模态划分及损耗分布规律。通过Simulink平台构建高保真仿真模型,对变换器在不同负载和输入条件下的电压增益、转换效率、关键器件电压电流应力等性能指标进行了全面仿真验证,重点探讨了其在低增益区间的软开关实现能力与效率优化潜力,旨在提升LLC变换器在宽范围输入输出应用的动态响应与能源转换效率。; 适合人群:从事电力电子变换器设计、高频电源开发及相关领域的高校研究生、科研院所研究人员及企业研发工程师,要求具备扎实的电路理论基础、电力电子技术知识以及一定的Simulink仿真能力。; 使用场景及目标:①深入理解LLC谐振变换器在fs>fr条件下采用移相混合控制的内在工作机理与模态转换过程;②掌握利用Simulink搭建复杂谐振变换器精确仿真模型的方法与技巧;③分析并优化低压增益区的增益特性与损耗构成,为设计高效率、高功率密度的软开关电源提供理论依据和数据支持; 阅读建议:建议读者结合文所述仿真模型,亲自复现仿真过程,重点观察不同控制参数(如移相比、开关频率)对电压增益曲线和关键波形的影响,并对比传统变频控制策略,深入探究混合控制在拓宽调压范围、提升轻载效率方面的优势,从而深化对现代高效谐振电源设计的理解。
内容概要:本文提出了一种基于粒子群优化算法(PSO)的配电网光伏储能双层优化配置模型,以IEEE33节点系统为标准算例,实现光伏发电单元与储能系统的协同选址与定容优化。该模型采用双层架构设计,上层以投资成本、运行经济性及网络损耗最小为目标优化设备配置方案,下层通过潮流计算评估系统在不同负荷场景下的运行性能,综合考虑电压稳定性、供电可靠性及可再生能源消纳能力,最终通过Matlab编程实现完整求解流程,为高渗透率分布式电源接入背景下的配电网规划提供了有效的技术支撑。; 适合人群:具备电力系统分析基础和Matlab编程能力的研究生、高校科研人员及从事新能源并网、智能配电网规划与优化的工程技术人员。; 使用场景及目标:①研究含高比例光伏接入的配电网规划与运行协同优化问题;②掌握双层优化建模方法与粒子群算法在复杂电力系统问题的应用技巧;③为实际工程分布式光伏与储能系统的科学选址与容量配置提供理论依据与仿真验证平台。; 阅读建议:建议读者结合Matlab代码深入理解双层迭代求解机制,重点关注算法收敛性分析、参数敏感性测试,并可通过更换初始种群、调整权重因子或引入其他标准测试系统(如IEEE69节点)进行对比实验,进一步验证所提模型的普适性与鲁棒性。

7,787

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧