LOCAL lcGraphData, lnFld, lnFieldCount *** Make the oleBoundControl invisible *** and unbind it so we can update the general field Thisform.LockScreen = .T. Thisform.oGraph.ControlSource = '' *** Now build the string we need to update the graph *** in the general field lcGraphData = "" SELECT csrResults lnFieldCount = FCOUNT() *** Build tab-delimited string of field names: FOR lnFld = 1 TO lnFieldCount lcGraphData = lcGraphData + FIELD( lnFld ) ; + IIF( lnFld < lnFieldCount, CHR( 9 ), CHR( 13 ) + CHR( 10 ) ) ENDFOR *** Concatenate the data, converting numeric fields to character: SCAN FOR lnFld = 1 TO lnFieldCount lcGraphData = lcGraphData + TRANSFORM( EVALUATE( FIELD( lnFld ) ) ) + ; + IIF( lnFld < lnFieldCount, CHR( 9 ), CHR( 13 ) + CHR( 10 ) ) ENDFOR ENDSCAN GO TOP IN csrResults *** OK, ready to update the graph SELECT csrGraph APPEND GENERAL oleGraph CLASS "MsGraph.Chart" DATA lcGraphData WITH Thisform.oGraph *** Reset the controlSource of the OleBound control .ControlSource = "csrGRaph.oleGraph" *** Set the chart type .object.ChartType = Thisform.cboGraphType.Value *** Set the data to graph the columns as the series *** Unless, of course, this is a pie chart IF NOT INLIST( .ChartType, xl3DPie, xlPie, xlPieOfPie, xlPieExploded, xl3DPieExploded, xlBarOfPie ) .Object.Application.PlotBy = xlColumns ELSE .Object.Application.PlotBy = xlRows ENDIF ENDWITH Thisform.LockScreen = .F.The MsGraph object model is just a cut-down version of Excel's graphing engine. So the easiest thing to do if use VbaGrp9.chm to find the PEMs you are interested in and then look them up in the Excel documentation.