VB 版 (精华区)
发信人: student (earth), 信区: VB
标 题: 怎样弥补mschart中的一些不足之处
发信站: 哈工大紫丁香 (2001年06月15日18:21:13 星期五), 站内信件
:用MSchart控件来绘制统计数据图形,虽然其功能不如我前面所写的利用VB生成EXCEL图
形,但其也有其简单实用的一面,不占用多少系统内存,数据转换图形速度快,不过有
一点就是,当点击曲线时出现小方格时,不象生成EXCEL图形时有数字出现,不知是不是
我没有钻研透,如果是还望高手指教,现在我用一个简单的方法,就是用ListBox控件来
替代,使用方法是当双击Mschart的图形时ListBox控件出现数字,当双击ListBox控件时
,ListBox控件隐没,当这个作为软件的一个模块给我的老总看时,老总看了直点头。当
月加了奖金,让我打牙祭,你说好不好。闲话少说为妙,言归正传。就把上篇文章生成
EXCEL图形改为生成MSCHART,但不计算累计,由网友自建,新建工程1,本工程用到如下
两个类库,在“工程/引用”选:
Microsoft ActiveX Data Objects 2.0 Library
其中的部件有:
microsoft Chart Control 6.0 (OLEDB 6.0)
Microsoft Windows Common Controls-2 5.0(SP2)
在表单中添加两个控件Dtpicker1,Dtpicker2分别用来确定销售起始日期数据和终止
日期数据添加命令按钮 Command1,MSchart控件,ListBox控件.把表单Name属性改为“X
SJE"
Dim cn As New ADODB.Connection
Dim xs As New ADODB.Recordset
Private Sub Command1_Click()
Dim daycy As Integer
daycy = DTPicker2.Value - DTPicker1.Value
If daycy < 0 Then
MsgBox "您选取的时间范围计算机不能处理...(" & DTPicker2.Value & " <" &
DTPicker1.Value & ")", vbOKOnly, "错误信息窗口"
Exit Sub
End If
Dim day, dayf As String
Dim yn As Boolean
ReDim arrayzypxs(daycy, 3)
If Mid(Format(DTPicker1.Value, "yymmdd"), 3, 2) = Mid(Format(DTPicker2.
Value, "yymmdd"), 3, 2) Then
daystr = Mid(Format(DTPicker1.Value, "yymmdd"), 3, 2) & "月"
Else
daystr = Mid(Format(DTPicker1.Value, "yymmdd"), 3, 2) & "月" & Mid(Form
at(DTPicker2.Value, "yymmdd"), 3, 2) & "月 "
End If
cn.ConnectionString = "DSN=FoxPro Files;DBQ=g:xs;DefaultDir=g:xs;Driver
Id=536;MaxBufferSize=512;PageTimeout=5;"
cn.Provider = "msdasql.1"
cn.CursorLocation = adUseClient
cn.Open
For i = 0 To daycy
day = CStr(Format(DTPicker1.Value + i, "yy-mm-dd"))
day1 = Format(DTPicker1.Value, "yy-mm-dd")
xs.Source = "select sum(je1) from xslbb where xslbb.date=#" & day & "#"
Set xs.ActiveConnection = cn
xs.Open
arrayzyp(i, 0) = IIf(Mid(day, 3, 1) = "0", Mid(day, 4, 3), Mid(day, 3,
4)) + "D"
arrayzyp(i, 1) = xs.Fields(0) / 10000
List1.AddItem arrayzyp(i, 0) & Space(3) & arrayzyp(i, 1)
Set xs.ActiveConnection = Nothing
xs.Close
Next i
With xsje
.Top = 150
.Left = 500
.Height = 6700
.Width = 11000
End With
MSChart1.ChartType = VtChChartType2dLine
MSChart1.ChartData = arrayzyp
MSChart1.Plot.Axis(VtChAxisIdY).AxisScale.Type = VtChScaleTypeLinear
MSChart1.Plot.Axis(VtChAxisIdY).CategoryScale.Auto = True
MSChart1.Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 30000
With MSChart1.Plot.Axis(VtChAxisIdY)
.AxisTitle.VtFont.Size = 12
.AxisTitle.VtFont.Name = "楷体_gb2312"
.AxisTitle.Text = "销售金额(万元)"
.AxisScale.Type = VtChScaleTypeLinear
.CategoryScale.LabelTick = True
.CategoryScale.DivisionsPerTick = 6000
.Intersection.Point = 12
End With
End Sub
Private Sub MSChart1_DblClick()
List1.Visible = True
End Sub
Private Sub Form_Load()
With xsje
.Top = 3500
.Left = 2500
.Height = 2000
.Width = 8000
End With
DTPicker1.Value = Now - day(Now) + 1
DTPicker1.MaxDate = Now
DTPicker2.Value = Now
End Sub
Private Sub List1_DblClick()
List1.Visible = False
End Sub
--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.170.186]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.388毫秒