2016-10-22 14 views
0

私はvb6で学生データベースプロジェクトを作成しています。私は学生の結果のグラフを表示する必要があります。私はどのようにそれを行うには良いチュートリアルを見つけることができませんでした。このhow to create Mschart in VB6?が見つかりましたが、リンクされているチュートリアルは削除されました。自分のデータベースにMSChartを接続するにはどうすればいいですか?ヘルプ:)アクセスデータベースでMSChartを使用する

+0

MSChartには非常に複雑なオブジェクトモデルがあります。ほとんどのチュートリアルは非常に単純化されているので、多分、ほんの些細な例を読む必要があります。それに加えて、IDEのオブジェクトブラウザを使用してオブジェクトモデルを探索してください。そこにはF1キーのヘルプが付いています。 – Bob77

答えて

1

ため

おかげで私はあなたが何をしたいのか全く一定ではないんだけど、ここでは、少なくともいくつかのアイデアを提供するかもしれない暗闇の中で野生の刺します。

Table: Grades 
Holds a row for each Student and their Grade in percent from 0 to 100. 
Field: ID AutoNumber, Primary Key 
Field: Student Text(50) 
Field: Grade Byte 

私は、等級範囲の間隔で棒グラフとして学生の等級値の数をプロットしたいと考えています。 0~9%、10~19%、... 100%である。

私はLEFT OUTERは、別のテーブルのGradeRangesにグレードのJOINをやる、その範囲の0学生の数と間隔を取得してくださいするには、次の

Table: GradeRanges 
Predefined auxiliary table with values from 0 to 100 in steps of 10 for GradeRange values. 
Field: ID AutoNumber, Primary Key 
Field: GradeRange Byte 

私は30のための成績を持って起こります学生の。結果:

enter image description here

Option Explicit 

Private Sub Form_Load() 
    Dim CN As ADODB.Connection 
    Dim RS As ADODB.Recordset 

    With MSChart1 
     .TitleText = "Counts of Student Grades in 10% Intervals" 
     With .Title.VtFont 
      .Size = 14 
      .Style = VtFontStyleBold 
      .VtColor.Set 32, 96, 192 
     End With 
     With .Plot 
      With .Wall.Brush 
       .Style = VtBrushStyleSolid 
       .FillColor.Set 255, 255, 255 
      End With 
      With .Axis(VtChAxisIdY).ValueScale 
       .Auto = False 
       .Maximum = 15 
       .Minimum = 0 
       .MajorDivision = 3 
       .MinorDivision = 2 
      End With 
      With .SeriesCollection.Item(1).DataPoints.Item(-1) 
       With .Brush 
        .Style = VtBrushStyleSolid 
        .FillColor.Set 192, 224, 255 
       End With 
       With .DataPointLabel 
        .LocationType = VtChLabelLocationTypeAbovePoint 
        .VtFont.Style = VtFontStyleBold 
       End With 
      End With 
     End With 
    End With 

    Set CN = New ADODB.Connection 
    CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Mode=Share Exclusive;" _ 
      & "Data Source='grades.mdb'" 

    On Error Resume Next 'In case previous run failed try dropping this here. 
    CN.Execute "DROP TABLE [TempGrades]", , adCmdText Or adExecuteNoRecords 
    On Error GoTo 0 

    'Create TempGrades table containing CalcRange values so we can do a 
    'LEFT OUTER JOIN to the GradeRanges table. This allows us to plot 
    'the ranges with a Count of 0 in them: 
    CN.Execute "SELECT [Grade], ([Grade] \ 10) * 10 AS [CalcRange] " _ 
      & "INTO [TempGrades] FROM [Grades]", _ 
       , _ 
       adCmdText Or adExecuteNoRecords 

    Set RS = New ADODB.Recordset 
    With RS 
     .CursorLocation = adUseClient 
     .Open "SELECT CStr([GradeRange]) & '%', COUNT([Grade]) AS [Count] " _ 
      & "FROM [GradeRanges] LEFT OUTER JOIN [TempGrades] " _ 
      & "ON [GradeRanges].[GradeRange] = [TempGrades].[CalcRange] " _ 
      & "GROUP BY [GradeRange] " _ 
      & "ORDER BY [GradeRange]", _ 
       CN, _ 
       adOpenStatic, _ 
       adLockReadOnly, _ 
       adCmdText 
     .MoveFirst 'Important, otherwise MSChart will lose the 1st row data! 
        'Also note that the 1st column MUST BE String data or it 
        'will not be used as X-axis Label values. 
     Set MSChart1.DataSource = RS 
     .Close 
    End With 

    CN.Execute "DROP TABLE [TempGrades]", , adCmdText Or adExecuteNoRecords 
    CN.Close 
End Sub 

Private Sub Form_Resize() 
    If WindowState <> vbMinimized Then 
     MSChart1.Move 0, 0, ScaleWidth, ScaleHeight 
    End If 
End Sub 

私はAUXおよび一時テーブルなしでこれを行うのが大好きです。たぶん誰かが代替案を提案するかもしれません。

+0

方向をありがとう、私は誰かが私を開始する必要があり、あなたはした。それも説明しました。私はおそらくこれに関して近い将来、別の問題を提起するだろう。どうもありがとう。 :) –

関連する問題