2016-10-22 12 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%.

Чтобы быть уверенным, я получаю интервалы с отсчетом от 0 студентов в этом диапазоне, я сделаю LEFT OUTER JOIN из классов в другую таблицу GradeRanges:

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 

Я хотел бы сделать это без Окс и временных таблиц. Может быть, кто-то другой может предложить альтернативу.

+0

Спасибо за направление, мне нужно, чтобы кто-то начал меня, и ты это сделал. Это тоже объяснило. Вероятно, в ближайшем будущем я буду задавать еще одну проблему. Большое спасибо. :) –

 Смежные вопросы

  • Нет связанных вопросов^_^