VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 如何动态更新数据报表
发表评论(0)作者:, 平台:, 阅读:11794, 日期:2000-03-12
如何动态更新数据报表



本文向你介绍如何一个在设计时没有绑定任何数据的数据报表。用这种方法创建的

报表能让你不必事先知道数据源中字段的名称。


一般来讲,使用数据报表时,TextBox必须绑定到一个ADO记录集。在某些情况下,

你需要在运行时创建一个数据报表,而在设计时你并不知道数据源中字段的名称。

为完成此功能,你必须在工程中添加一个数据报表,该报表中的控件数须同你想获

取的字段数一致.然后打开ADO记录集,循环更新数据报表。下面的代码实现了此功

能。


首先开始一项新的EXE工程,Form1被自动添加。


在工程菜单中选取引用,然后选择Microsoft ActiveX Data Objects.


从工程菜单中选择“添加数据报表”。如果你你没有看到此选项,你必须在该菜单

中选择“部件...”,然后切换到设计器,从中选取对数据报表的引用。 


将数据报表的名称属性改为DR。 


添加两个Report Label和两个Report TextBox到报表中的“细节”区。 


在窗体Form1中添加一个名为Command1的命令按钮。 


将下述代码放在Form1中: 


Dim cn As New ADODB.Connection


Dim rs As New ADODB.Recordset


Dim cmd As New ADODB.Command



Private Sub Command1_Click()


Dim q As Integer


Dim intCtrl As Integer


Dim x As Integer


Dim z As Integer


x = 0


q = 0


z = 0



With DR


.Hide


Set .DataSource = rs


.DataMember = ""


With .Sections("Section1").Controls


For intCtrl = 1 To .Count


If TypeOf .Item(intCtrl) Is RptLabel Then


.Item(intCtrl).Caption = rs.Fields(q).Name & " :"


q = q + 1


End If


If TypeOf .Item(intCtrl) Is RptTextBox Then


.Item(intCtrl).DataMember = ""


.Item(intCtrl).DataField = rs(z).Name


z = z + 1


End If


Next intCtrl


End With


.Refresh


.Show


End With


End Sub



Private Sub Form_Load()



Command1.Caption = "Show Report"



cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _


"Data Source=C:\Program Files\Microsoft Visual Studio\VB98\Nwind.mdb;"



With cmd


.ActiveConnection = cn


.CommandType = adCmdText


.CommandText = "Select FirstName, Lastname from Employees"


.Execute


End With



With rs


.ActiveConnection = cn


.CursorLocation = adUseClient


.Open cmd


End With



End Sub


本例中用到Northwind数据库,上面的路径可能与你计算机中Northwind的路径不同,

改变相关的语句然后运行程序。