手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp.Net编程>列表

Visual Basic实现动态报表

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

Dim i As Integer
Const wordwidth As Integer = 201 '五号字的宽度为201缇
For i = 0 To lst.ListCount - 1
Select Case lst.List(i)
Case "序号"
lst.ItemData(i) = wordwidth * 3
Case "股票代号"
lst.ItemData(i) = wordwidth * 5
Case "股票名称"
lst.ItemData(i) = wordwidth * 6
Case "收盘价"
lst.ItemData(i) = wordwidth * 5
Case "涨跌"
lst.ItemData(i) = wordwidth * 4
Case "最高价"
lst.ItemData(i) = wordwidth * 5
Case "最低价"
lst.ItemData(i) = wordwidth * 5
Case "成交量"
lst.ItemData(i) = wordwidth * 4
End Select
Next i
End Sub
'******************************************************************

  4.设置Datareport窗体属性,控制输出格式

  设置Datareport窗体的属性,控制输出格式也可用一子过程完成,需要说明的是为Datareport和数据控件设置属性时,在设计编码过程中,Visual Basic多数不出现正常情况下的智能提示,不必大惊小怪,完整代码如下。

'***********************************************************************
'设置报表窗体各种参数,控制输出格式
Private Sub setDatareport(lst As ListBox, dtr As Datareport, scaption As String)
Dim leftpos As Long 'leftpos为存放控件left属性的变量
Dim reportwidth As Long 'reportwidth为存放Datareport总宽度的变量
Dim i As Integer

'求总宽度
For i = 0 To lst.ListCount - 1
reportwidth = reportwidth lst.ItemData(i)
Next
'初始化
With dtr
'设置数据源,页边距,标题,横向分割线,section1、2区第一条竖分割线
.LeftMargin = 1440
.RightMargin = 1440
.TopMargin = 1440
.BottomMargin = 144
.reportwidth = Printer.Width - 2880 - 20
Set .DataSource = rs 'rs为ADODB数据源
.Sections("section4").Controls.Item("label41").Caption = scaption
.Sections("section4").Controls.Item("label41").Width = reportwidth
.Sections("section4").Controls.Item("label42").Width = reportwidth
.Sections("section2").Controls.Item("line_2").Width = reportwidth
.Sections("section2").Controls.Item("line2").Width = reportwidth
.Sections("section1").Controls.Item("line1").Width = reportwidth
.Sections("section2").Controls.Item("line20").Left = 0
.Sections("section1").Controls.Item("line10").Left = 0
End With

'为section1,2区设置数据
leftpos = 0
For i = 0 To lst.ListCount - 1
dtr.Sections("section2").Controls.Item("label1" & (i 1)).Caption = lst.List(i)
dtr.Sections("section2").Controls.Item("label1" & (i 1)).Width = lst.ItemData(i)
dtr.Sections("section2").Controls.Item("label1" & (i 1)).Left = leftpos
dtr.Sections("section1").Controls.Item("text1" & (i 1)).DataField = lst.List(i)
dtr.Sections("section1").Controls.Item("text1" & (i 1)).Width = lst.ItemData(i)
dtr.Sections("section1").Controls.Item("text1" & (i 1)).Left = leftpos
dtr.Sections("section2").Controls.Item("line2" & (i 1)).Left = leftpos lst.ItemData(i)
dtr.Sections("section1").Controls.Item("line1" & (i 1)).Left = leftpos lst.ItemData(i)
leftpos = leftpos lst.ItemData(i)
'特殊字段的格式特殊处理
If lst.List(i) = "收盘价" Or lst.List(i) = "最低价" Or lst.List(i) = "最高价" Then
dtr.Sections("section1").Controls.Item("text1" & (i 1)).DataFormat.Format = "¥#,##0.00"
End If
If lst.List(i) = "涨跌" Then
dtr.Sections("section1").Controls.Item("text1" & (i 1)).DataFormat.Format = "#,##0.00"
End If
If lst.List(i) = "成交量" Then
dtr.Sections("section1").Controls.Item("text1" & (i 1)).DataFormat.Format = "#,##0"
End If
Next i

'对不用的text控件必须设置其datafield属性,如lst.List(0),否则出错,但一定让其不可见
'其他不用的label,line控件同样均不可见
i = lst.ListCount
While i < (dtr.Sections("section1").Controls.Count - 10)
'10 为section1区域的非text控件的控件总数
i = i 1
dtr.Sections("section1").Controls.Item("text1" & i).DataField = lst.List(0)
dtr.Sections("section1").Controls.Item("text1" & i).Visible = False
dtr.Sections("section2").Controls.Item("line2" & i).Visible = False
dtr.Sections("section1").Controls.Item("line1" & i).Visible = False
dtr.Sections("section2").Controls.Item("text1" & i).Visible = False
Wend
End Sub
'******************************************************************************

  5.报表输出

  报表输出是在单击"输出报表"按钮(cmd_report)完成的,代码如下。

'*******************************************************************************
Private Sub cmd_report_Click()
If lst_selected.ListCount <> 0 Then
Call fieldwidth(lst_selected) '设置字段宽度
Call setdatareport(lst_selected, Dtreport, Trim$(txt_caption)) '设置报表属性

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!