ID: Q158927
The information in this article applies to:
Moderate: Requires basic macro, coding, and interoperability skills.
This article shows you how to use code to set the RowSource property of a Graph object in a Microsoft Access report.
NOTE: A demonstration of the technique used in this article can be seen in the sample file, Grphsm97.exe. For information about how to obtain this sample file, please see the following article in the Microsoft Knowledge Base:
ARTICLE-ID: Q186855
TITLE : ACC97: Microsoft Access 97 Sample Graphs Available on MSL
If you try to set the RowSource property of a Graph object on a report in Print Preview, you may receive the following error message.
You can't set the Row Source property after printing has started.
Can't set property 'Row Source' after printing has started.
You must open the report in Design view first, set the RowSource property
of the Graph object, and then print or view the report. In the following
example, you create a macro to open a report in Design view, set the
RowSource property of a graph, and then display the report in Print
Preview. Then the macro is attached to a command button on a form to
dynamically change the contents of the graph based on the current record on
the form.
CAUTION: Following the steps in this example will modify the sample database Northwind.mdb (or NWIND.MDB in Microsoft Access 2.0). You may want to back up the Northwind.mdb (or NWIND.MDB) file and perform these steps on a copy of the database.
1. Open the sample database Northwind.mdb (or NWIND.MDB in 2.0).
2. Create a new report not based on any table or query in Design view.
3. Add a graph to the detail section of the report showing the total number
of customer orders taken by each employee.
In Microsoft Access 7.0 and 97:
a. On the Insert menu, click Chart, and then click in the detail
section of the report to invoke the Chart Wizard.
b. In the "Which table or query would you like to use to create your
chart?" dialog box, select the Orders table, and then click Next.
c. In the "Which fields contain the data you want for the chart?"
dialog box, add OrderID and EmployeeID to the Fields For Chart box,
and then click Next.
d. In the "What type of chart would you like" dialog box, click Column
Chart, and then click Next.
e. In the "How do you want to lay out the data in your chart?" dialog
box, drag OrderID to Data (at the upper-left of the graph). Drag
EmployeeID to Axis (at the bottom of the graph). Leave Series blank,
and then click Next.
f. In the "What title would you like for your chart" dialog box, click
Finish.
In Microsoft Access 2.0:
a. Click the Graph button on the Toolbox toolbar, and then click in the
detail section of the report to invoke the Graph Wizard.
b. In the "Where do you want your graph to get its data?" dialog box,
select the Orders table and then click Next.
c. In the "Which fields contain the data you want for your graph?"
dialog box, add Order ID and Employee ID to the Fields For graph
box, and then click Next.
d. In the "What categories do you want along the graph's axis?" dialog
box, add Employee ID to the Categories For Axis box, and then click
Next.
e. In the "How to you want to calculate the totals for each category on
your graph?" dialog box, click "Count the number of records in each
category," and then click Next.
f. In the "What type of graph do you want?" dialog box, click Next.
g. In the "What title do you want on your chart?" dialog box, click
Finish.
4. Set the Name property of the graph object to GraphTest.
5. Save the report as OrdersPerEmployee and close it.
1. Create a new macro called RptGraph with the following actions.
NOTE: In the SetValue expression of the following macro, an underscore
(_) at the end of a line is used as a line-continuation character.
Remove the underscore from the end of the line when re-creating this
expression.
NOTE: In the SetValue expression of the following macro, type a
space in [Employee ID], [Order ID], and [Customer ID] in Microsoft
Access 2.0.
Macro Name Action
-----------------------
RptGraph Echo
OpenReport
SetValue
RunCommand (or DoMenuItem in versions 2.0 and 7.0)
OpenReport
Echo
RptGraph Actions
------------------------------------------------------------
Echo
Echo On: No
OpenReport
Report Name: OrdersPerEmployee
View: Design
SetValue
Item: Reports!OrdersPerEmployee!GraphTest.RowSource
Expression: "SELECT [EmployeeID], Count([OrderID]) as _
[Number of Orders] FROM [Orders] where [CustomerID] = _
Forms!Customers![CustomerID] GROUP BY [EmployeeID];"
In Microsoft Access 97 only, use the following Runcommand:
RunCommand
Command: Save
In Microsoft Access 2.0 and 7.0 only, use the following DoMenuItem:
DoMenuItem
Menu Bar: Report
Menu Name: File
Command: Save
OpenReport
Report Name: OrdersPerEmployee
View: Print Preview
Echo
Echo On: Yes
2. Save the macro and close it.
1. Open the Customers form in Design view.
2. Add a command button to the Form Header section of the form and set the
following properties:
Command Button
--------------
Name: OpenReport
Caption: Preview Graph
OnClick: RptGraph
3. Open the form in Form view and click the Preview Graph button. Note that
the graph report opens and shows a count of orders taken, by employee,
for the current customer record.
4. Close the report and return to the Customers form.
5. Move to a different customer record and click the Preview Graph
button. Note that the graph report opens and shows orders, by employee,
for the current customer record.
For more information about the RowSource property, search the Help Index for "RowSource property," or ask the Microsoft Access 97 Office Assistant.
Additional query words:
Keywords : kbinterop kbprg IntpGrph
Version : 2.0 7.0 97
Platform : WINDOWS
Hardware : x86
Issue type : kbhowto
Last Reviewed: November 21, 1998