2009-04-14 22 views
5

OK, no hay absolutamente ningún buen artículo en Internet que pueda encontrar que explique o tenga ejemplos de código sobre cómo crear un gráfico dinámico usando VBA. Necesito esto porque necesito el cuadro de pivote para mostrar diferentes resultados dependiendo de la selección del usuario en un formulario. Hay algunos para Excel, pero la sintaxis es diferente para Access. Sé que esta es una pregunta difícil, pero si alguien tiene un ejemplo de cómo crear un gráfico dinámico en VBA, realmente agradecería la ayuda.Creación de gráfico de pivote utilizando Access 2007 VBA

Respuesta

3

Bien después de aproximadamente 3 días de búsqueda creo que lo encontré. No es que a nadie realmente le importe, esto solo tiene 6 puntos de vista, dice mucho sobre la total horribleidad de VBA. De todos modos, MSDN tenía esto oculto bajo "Office XP" en lugar de bajo Access, pero lo que sea.

http://msdn.microsoft.com/en-us/library/aa662945.aspx#

+0

sólo dice algo acerca de la facilidad de uso de gráficos en Access, donde no han habido Problemas importantes para integrar MS Graph en 1996. Por lo tanto, muchos desarrolladores avanzados de Access lo evitan. Las tablas pivote no existían hasta A2003, y recuerdo que las personas tienen problemas para hacer que funcionen. –

0

He crear un formulario de gráfico dinámico en Access 2007. En otra forma tengo los controles de selección de usuarios y la pivotform como un subformulario. Luego utilizo un código como este en la forma principal. El modelo de objetos es el mismo que OWC11 (Office Web Components 11).

Private Function DisplayChart() 

    With mysubform.Form.ChartSpace 
    .Clear 
    .AllowFiltering = True 
    .HasChartSpaceTitle = True 
    .ChartSpaceTitle.Caption = "test" 
    .DisplayFieldButtons = False 
    .DisplayToolbar = False 

    .ConnectionString = ... 
    .CommandText = "SELECT rSeries, rCategory, rDate, rValue " & _ 
     "FROM myTable" 

    .Charts(0).Type = chChartTypePie 

    .SetData chDimSeriesNames, chDataBound, "rSeries" 
    .SetData chDimCategories, chDataBound, "rCategory" 
    .SetData chDimValues, chDataBound, "rValue" 

    .HasChartSpaceLegend = True 

    End With 

End Function 

las constantes se pueden derivar de OWC11

C: \ Shared Web Components Archivos de programa \ Archivos comunes \ Microsoft \ \ 11 \ owc11.dll

que los necesite en la parte superior de la módulo. En esta etapa, no estoy seguro de cómo extraerlos del panel de acceso. Haga una referencia a OWC11 y establezca el subformulario ChartSpace en una variable declarada como OWC11.ChartSpace. Después de escribir el código, cambie para escribir 'Objeto' y elimine la referencia de enlace tardío (y vuelva a probar). De esta forma, sus refs no se despegarán en una máquina de 64 bits cuando implemente.

Private Enum ChartConstants 
    chDimSeriesNames = 0 
    chDimCategories = 1 
    chDimValues = 2 
    chDataBound = 0 
    chAxisPositionValue = -8 
    chAxisPositionCategory = -7 
    chChartTypePie = 18 
End Enum 

Recuerde que también puede permitir que el usuario tenga acceso al formulario de propiedades del gráfico dinámico, las listas de campos y las zonas de colocación. O pueden hacer clic con el botón derecho en el gráfico para llegar a ellos.

(Nota - esto sigue siendo un nuevo descubrimiento para mí, así que trataré de actualizar esta respuesta si encuentro alguna gotcha.)

+0

aquí hay un artículo de Mike Gunderloy usando los gráficos vba en A2002 http://msdn.microsoft.com/en-us/library/aa155735%28office.10%29.aspx –

Cuestiones relacionadas