看到有个软件使用了FASTREPORT报表,可提供二次打印接口给客户自行设置.
研究了几天,也没整明白.1.那个软件调用FP的时候,数据源的连接信息(比如指定某个ACCESS文件或SQL数据库的地址账号密码)和SQL查询,再由软件通过FP调用一个预先设计好的打印模板FR3文件,直接使用FP3文件的是话用不了的,没有数据源,那将通过软件来去先调FR3文件再传入数据源和SQL查询.
FP界面中,无法追踪到数据源信息和SQL查询信息,只可直接调用相关的字段.已测来测去相关代码,但都无法实现效果.
Dim frx As New FastReport.TfrxReport
Dim designer As New FastReport.TfrxDesignerDim page As FastReport.IfrxReportPageDim sql_query As FastReport.IfrxADOQuery
Dim database As FastReport.IfrxADODatabase
Dim table As FastReport.IfrxADOTable
Private Sub Command1_Click()
'Set frx = CreateObject("FastReport.TfrxReport")
'frx.EngineOptions.SilentMode = simMessageBoxes
Set dst = CreateObject("FastReport.TfrxUserDataSet")'Set database = CreateObject("FastReport.IfrxADODatabase")
frx.LoadReportFromFile (App.Path & "\fr_and_access.fr3")Set table = frx.FindObjectEx("at1")
'Set db1 = frx.CreateReportObjectEx(frx, "TfrxADODatabase", "ADODatabase1")
'Set database = frx.CreateReportObjectEx(frx, "TfrxADODatabase", "ADODatabase1")
'Set db2 = frx.FindObjectEx("ADODatabase1")
dbs = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=" & App.Path & "\db1.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"
table.database = dst
VB中如何实现?