如果数据源来自数据环境我是这么做的
Unload Envir
Load Envir
Report1.Refresh
Report1.Show 1
Unload Envir
Load Envir
Report1.Refresh
Report1.Show 1
解决方案 »
- 关于VB读取word中某一行的问题,求求各位高手帮我解决下!!!
- 用VB开发的指纹数据同步小程序 在调用指纹控件时狂点虚拟内存 无法自释放
- 刚学VB,帮帮忙
- 在treeview中如何删除一个指定节点的所有子节点?
- ocx 里触发Image1_Click事件
- 文件内容保存在字段的问题
- 如何得知调用的外部的程序运行完呢
- 请问大侠:在VB中可以通过某种方式(如:API)改变窗口标题栏的颜色吗及其上面的按钮的外观属性吗??
- 终于进来了,管理员是怎么回事呀,CSDN怎么了。这么慢.
- InstallShield for Microsoft VB 请问那里有这个东东下载。。。。
- 用winsock收回来的字符流如何实现简繁转换?急!急!急!!!!
- 如何在保持文本中原有自然段(即开头空两格)的情况下去掉行尾的回车换行。请高手赐教!(以前问过,但没说明白)
con.close
endif
con.open "..."
con.commands(1).rsCust或:
if con.rsrscust.state<>adstateclosed then
con.rsrscust.close
endif
con.rscustOK??
欢迎访问 http://microinfo.top263.net
1.《VB 6之数据报表使用技巧》http://media.ccidnet.com/ciw/871/b1301.htm2.PlayYuer 2000/02/01 贴:
《VB6之Data Report全面解决方案(1)》(未完待续) Microsoft Visual Basic 6.0 专业版和企业版中的数据报表设计器(Data Report Designer)与数据环境设计器
(Data Environment Designer) 是数据访问的新内容。Microsoft Developer Network Library Visual Studio 6.0
所提供的示例应用程序: \Samples\Vb98\DataRept\ 目录下的 Prjnwind.vbp 工程使用一个 DataEnvironment 作为
数据源,演示了数据报表设计器的基本功能。该示例在程序设计阶段 (Design Time) 就已将 DataEnvironment 设为
Data Report 的数据源,并将打印格式也一并设好以备打印,这种做法非常不利于程序的通用性。当然,我们也可以对
DataEnvironment 进行编程,在程序运行阶段 (Run Time) 控制数据源 DataEnvironment 的 Connection (连接) 的
Command(命令) 的 CommandText 属性,即:其所对应的记录集 (rsCommand) 来打印不同的数据,可以参阅微软官方网
站的 Knowledge Base(知识库)所载的《Q190411 - HOWTO Bind a DataReport To an ADO Recordset at Run Time》
一文。其实,Data Report 是可以完全脱离 DataEnvironment ,而使用其它 ADODB 数据源 (DataSource) 的,可以参
阅:《Q240019 - HOWTO Dynamically Populate a Data Report in Visual Basic》一文,如:ADO Data控件 (ADODC)。
但是,我们在程序设计阶段不能将 ADO Data 控件(ADODC)设为 Data Report 的数据源。原因很简单, ADODC 是必须
绘制在 Form(窗体) 上的,是模块级的,而 Data Report 与 Form 是模块与模块的关系,而模块之间要共享数据,是必
须通过 Public(全局) 变量来实现的。所以,DataReport 要使用一个全局的,或者是本设计器模块内的模块级或过程
级的数据源,以及其它数据类型的变量。再进一步,DataReport 是可以直接使用 ADODB.Recordset 作为数据源的,即:
DataReport 可以打印由动态 SQL 语句生成的ADODB.Recordset。事实证明,如果使用 DataEnvironment 是相当浪费
系统资源的,因为其本身就至少要打开一个 ADODB.Connection(连接),ADODC 同样也要打开一个 Connection,所以直
接使用ADODB.Recordset作为 DataReport 的数据源是最为经济的用法。下面是使用ADODC和ADODB.Recordset设置DataReport的数据源的实现代码:
Private Sub DataReport_Initialize()
...
Set Me.DataSource = FormX.AdodcX
...
End SubPrivate Sub DataReport_Initialize()
'造一个有若干个字段,若干条记录的的记录集
'该记录集也可以是在其它模块中声明的 Public (全局) 并已经打开的记录集
Dim adoRecordsetX As New ADODB.Recordset
adoRecordsetX.Fields.Append "Fld1", adVariant, , adFldIsNullable + adFldMayBeNull
adoRecordsetX.Fields.Append "Fld2", adVariant, , adFldIsNullable + adFldMayBeNull
adoRecordsetX.Fields.Append "Fld3", adVariant, , adFldIsNullable + adFldMayBeNull
adoRecordsetX.Open
adoRecordsetX.AddNew Array("fld1", "fld2", "fld3"), Array("aa", True, 123)
adoRecordsetX.AddNew Array("fld1", "fld2", "fld3"), Array(True, 123, "aa")
Set Me.DataSource = adoRecordsetX
…
End Sub
既然, DataReport 可以打印由动态 SQL 语句生成的ADODB.Recordset,那么就需要编程,在程序运行阶段完全控
制 DataReport 及数据报表设计器的专用控件。但是DataReport仅为这些专用控件在本设计器内的控件集(Controls)
中提供索引(Index),这种标识控件的方法非常不利于分别控制不同类型的控件。而且 DataReport 不能象窗体(Form)
那样可以编程在程序运行阶段动态加入控件,这也不利于打印不同的动态数据源。还好,VB提供了集合对象(Collection),
这样就可以编程,在程序运行阶段将数据报表设计器专用控件根据其所在的区域(Sections)和所属控件类别等将它们
分成若干集合,然后通过控制集合的元素来准确有效地控制这些元素所代表的控件。这样,在程序设计阶段就要将足够多
的控件绘制到DataReport上备用,实现上面的程序代码均可以编写到Sub DataReport_Initialize()事件过程里。下面是将数据报表设计器专用控件根据其所在的区域(Sections)和所属控件类别等将它们分成若干集合的代码:
Dim RHSec4_RptLbl_Collection As New Collection
…
'页标头(PageHeader)区域 Shape(RptShape) 控件集合
Dim PHSec2_RptShp_Collection As New Collection
…
'细节(Detail)区域 TextBox(RptTextBox) 控件集合
Dim DSec1_RptTxt_Collection As New Collection
…
Dim Ctl As Object
…
For Each Ctl In Me.Sections.Item("Section1").Controls 'Section1
Select Case TypeName(Ctl)
Case "RptLabel"
DSec1_RptLbl_Collection.Add Ctl
Ctl.Caption = ""
Case "RptShape"
DSec1_RptShp_Collection.Add Ctl
Case "RptTextBox"
Ctl.DataField = adoRecordset.Fields.Item(0).Name
'先将所有TextBox(RptTextBox) 控件绑定到某一字段
'否则报错!
DSec1_RptTxt_Collection.Add Ctl
End Select
Ctl.Visible = False '先使所有控件不可见
Next Ctl
…
细节强调:
DataReport默认分为页标头、细节、页注脚三个区域,可在每个区域为每种控件定
义一个或多个集合,注意所有的RptTextBox 控件
控件经过上面的分集合过程,控件在集合中就拥有了索引,这样就可以较方便地通过
制集合的元素来准确有效地控制这些元素所代表的控件的大小、位置、字体、颜色等属性。
如果报表的格式,即:码放控件的位置,复杂多样,则可在程序设计阶段就将控件绘制到
DataReport上的适当位置,设计好格式。如果报表格式不很复杂,关键是控件位置的坐标要
有一定的数学规律,则可编程在程序运行阶段控制其位置,如:打印二维表。