开发环境为vb6.0和水晶报表9.2Set objCRReport = objCRApp.OpenReport(App.Path & "\Report\Report3.rpt", 1)’数据源在
Report3.rpt这个文件里面指定的
objCRReport.Database.SetDataSource Recordset‘Recordset为查询出来的数据
CRViewer91.ReportSource = objCRReport
CRViewer91.ViewReport如果数据源的位置发生变化,就会出现找不到数据源的错误请问怎么实现动态设置数据源
Report3.rpt这个文件里面指定的
objCRReport.Database.SetDataSource Recordset‘Recordset为查询出来的数据
CRViewer91.ReportSource = objCRReport
CRViewer91.ViewReport如果数据源的位置发生变化,就会出现找不到数据源的错误请问怎么实现动态设置数据源
解决方案 »
- 请大家帮看看啊(初学者请教)
- VB6.0如何使用共享打印机
- 用控件指定保存文件路径的方法?(可能上次没说清楚)
- 在VB中用ADO控件,怎么样才能访问到远程SQL Server数据库,在服务器端和客户端有什么要求或设置?
- 用NetMessageBufferSend发信息好慢呀,有没有快的??
- 设计修改密码模块但无法成功请帮忙看看
- 如何修改和刷新 ActiveBar 的状态栏?
- 有关记录里取字段的问题!请指点,急急急
- 如何解决要使for能从高到低循环?(在线)
- 老手们麻烦进来帮忙下,求教VB运行打印时 提示 msdbrptr.dll 加载控件"Datareport"失败
- 怎么自动格式化硬盘?
- VB6如何转换字符串的编码内存存储格式
你程序一运行,就固定数据源了呀或许不懂你的意思你可以用objCRReport.Database.SetDataSource "数据源","表","用户名","密码"
我后面跟的是一个结果集RecordsetSet objCRReport = objCRApp.OpenReport(App.Path & "\Report\Report3.rpt", 1)’数据源在Report3.rpt这个文件里面指定的,是用水晶报表工具直接打开的数据源指定错误的时候,程序回报错,运行不了
";uid=" uid ";pwd=" pwd ";database=yourdb".Connect = strtemp
Private objCRReport As New CRAXDRT.Report '报表对象
Dim rs As ADODB.Recordset
Dim msgtext As StringPrivate Sub cmdsearch_Click() '清除报表中保持的数据
objCRReport.DiscardSavedData
'形成数据集
'单个表适合用sql语句
strsql = "select * from clerk where clerk_bm='" & Combo1.Text & "'"
'多个表筛取数据 必须要用视图,水晶报表不能用sql语句
'strsql = "select * from clerk_organ_view where clerk_bm='" & Combo1.Text & "'"
Set rs = ExecuteSQL(strsql, msgtext)
'赋给报表数据
objCRReport.Database.SetDataSource rs
CRViewer91.ReportSource = objCRReport '指定报表来源
CRViewer91.ReportSource = objCRReport
'显示报表
CRViewer91.ViewReport
End SubPrivate Sub Form_Load()
Dim strsql As String
strsql = "select distinct clerk_bm from clerk"
Set rs = ExecuteSQL(strsql, msgtext)
Do While Not rs.EOF
Combo1.AddItem rs(0)
rs.MoveNext
Loop
'加载报表模板
'单个数据表形成的报表
Set objCRReport = objCRApp.OpenReport(App.Path & "\1.rpt", 1)
'多个数据表形成的报表
Set objCRReport = objCRApp.OpenReport(App.Path & "\2.rpt", 1)
End SubPrivate Sub Form_Resize()
' CRViewer91.Top = 50
' CRViewer91.Left = 0
' CRViewer91.Height = ScaleHeight - Combo1.Height
' CRViewer91.Width = ScaleWidth
End Sub
请问下,*.rpt这个是什么形成的还有Set rs = ExecuteSQL(strsql, msgtext)能解释下这是?
Set rs = ExecuteSQL(strsql, msgtext)
我这里用ado 你应该知道吧
记得在工程/引用中引用ado
将下面的代码放到类模块中
Dim msgtext As String
Dim mrc As ADODB.RecordsetPublic Function ExecuteSQL(ByVal sql As String, MsgString As String) As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() As String
'Dim SQL As String
On Error GoTo ExecuteSQL_Error
sTokens = Split(sql)
Set cnn = New ADODB.Connection
cnn.Open GetDatabaseConnectionString
If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then
cnn.Execute sql
MsgString = sTokens(0) & "query successful"
Else
Set rst = New ADODB.Recordset
rst.Open Trim$(sql), cnn, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & "条纪录"
End If
ExecuteSQL_Exit:
Set rst = Nothing
Exit Function
Set cnn = Nothing
ExecuteSQL_Error:
MsgString = "查询错误:" & Err.Description
Resume ExecuteSQL_Exit
End FunctionPublic Function GetDatabaseConnectionString() As String
'不打包时,用自己的数据库
GetDatabaseConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password=password;Initial Catalog=DQYT;Data Source=13.1.1.66"
'打包时需要用下面的
'GetDatabaseConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password=kingland;Initial Catalog=DQYT;Data Source=13.1.1.69"
End Function
如下面的程序,crtXSCJD是添加rpt文件后形成的一个设计器文件。Private rsXSCJ As New ADODB.Recordset
rsXSCJ.Open "查询语句", dataCn.ConnectionString, adOpenStatic, adLockReadOnly, _
adCmdText'指定报表来源
crtXSCJD.DiscardSavedData
crtXSCJD.Database.SetDataSource rsXSCJ
CRViewer91.ReportSource = crtXSCJD
'显示报表
CRViewer91.ViewReport
CRViewer91.Refresh
Picture1.Visible = False