发表评论(0)作者:, 平台:, 阅读:11876, 日期: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的路径不同,
改变相关的语句然后运行程序。
本文向你介绍如何一个在设计时没有绑定任何数据的数据报表。用这种方法创建的
报表能让你不必事先知道数据源中字段的名称。
一般来讲,使用数据报表时,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的路径不同,
改变相关的语句然后运行程序。