Avatar billede sigyn Seniormester
12. september 2008 - 10:07 Der er 9 kommentarer og
1 løsning

Skalaer mm på grafer i Access

Jeg har lavet en del grafer i Acces, men ind i mellem opfører de sig ikke helt så dynamisk, som jeg gerne vil have dem til. Jeg vil f.eks gerne kunne genbruge den samme graf med ret forskellige y-akser.

Min forespørgsel kunne f.eks se sådan ud.

lbnr    Måned    Resultat    Min    Maks    Produkt    Analyse    Enhed    Nederste    Øverste
1    01-01-2008    950    900    1000    Mælk    Mål    ml    810    1100
2    01-02-2008    900    900    1000    Mælk    Mål    ml    810    1100
3    01-03-2008    850    900    1000    Mælk    Mål    ml    810    1100
4    01-04-2008    980    900    1000    Mælk    Mål    ml    810    1100
5    01-05-2008    950    900    1000    Mælk    Mål    ml    810    1100
6    01-06-2008    970    900    1000    Mælk    Mål    ml    810    1100
7    01-07-2008    1100    900    1000    Mælk    Mål    ml    810    1100
8    01-08-2008    1000    900    1000    Mælk    Mål    ml    810    1100
9    01-09-2008    980    900    1000    Mælk    Mål    ml    810    1100
10    01-10-2008    940    900    1000    Mælk    Mål    ml    810    1100
11    01-11-2008    930    900    1000    Mælk    Mål    ml    810    1100
12    01-12-2008    970    900    1000    Mælk    Mål    ml    810    1100
13    01-01-2008    90    90    99    Mælk    Vand    %    81    108,9
14    01-02-2008    91    90    99    Mælk    Vand    %    81    108,9
15    01-03-2008    95    90    99    Mælk    Vand    %    81    108,9
16    01-04-2008    90    90    99    Mælk    Vand    %    81    108,9
17    01-05-2008    93    90    99    Mælk    Vand    %    81    108,9
18    01-06-2008    50    40    60    Wisky    Mål    ml    36    66
19    01-07-2008    55    40    60    Wisky    Mål    ml    36    66
20    01-08-2008    45    40    60    Wisky    Mål    ml    36    66
21    01-09-2008    30    25    35    Wisky    Vand    %    22,5    38,5
22    01-10-2008    25    25    35    Wisky    Vand    %    22,5    38,5
23    01-11-2008    20    25    35    Wisky    Vand    %    19,8    38,5
24    01-12-2008    28    25    35    Wisky    Vand    %    22,5    38,5
25    01-01-2008    10250    9000    11000    Sirup    Mål    cl    8100    12100
26    02-01-2008    10100    9000    11000    Sirup    Mål    cl    8100    12100
27    03-01-2008    10200    9000    11000    Sirup    Mål    cl    8100    12100
28    04-01-2008    10100    9000    11000    Sirup    Mål    cl    8100    12100
29    05-01-2008    10000    9000    11000    Sirup    Mål    cl    8100    12100
30    01-01-2008    10    100    200    Penge    Mål    kr    9,9    220
31    02-01-2008    150    100    200    Penge    Mål    kr    90    220
32    01-01-2008    100000    8000    12000    Korn    Mål    hkg    7200    101000
33    02-01-2008    101000    8000    12000    Korn    Mål    hkg    7200    102010

I Excel kan jeg styre det med denne makro, (jeg laver min forespørgsel med MSQ) men hvordan gør jeg i Access

Sub Makro1()
'
' Makro1 Makro
' Makro indspillet 02-09-2008 af Arla Foods amba
'

'
Dim MinSkala As Integer
Dim MaksSkala As Integer
Dim Overskrift As String
Dim Enhed As String
Dim Analyse As String

MinSkala = Range("Nederste")
MaksSkala = Range("Øverste")
Overskrift = Range("Analyse") & " " & "Resultater for " & Range("Produkt")
Enhed = Range("Enhed")


    ActiveSheet.ChartObjects("Diagram 1").Activate
    ActiveChart.PlotArea.Select


    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = Overskrift
        .Axes(xlCategory, xlPrimary).HasTitle = False
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = Enhed
    End With
   
    With ActiveChart.Axes(xlValue)
        .MinimumScale = MinSkala
        .MaximumScale = MaksSkala
        .MinorUnitIsAuto = True
        .MajorUnitIsAuto = True
        .Crosses = xlAutomatic
        .ReversePlotOrder = False
        .ScaleType = xlLinear
        .DisplayUnit = xlNone
End With

End Sub
Avatar billede Slettet bruger
12. september 2008 - 10:56 #1
som regel så zoomer access alt efter det range man ligger i.. har du måske fået indtastet værdier for min og max på grafens y-akse?~)
Avatar billede sigyn Seniormester
12. september 2008 - 11:20 #2
Jeg er ikke tilfreds med access's zoom. Hvis jeg f.eks har resultater i området 0-3, er access range for så vidt ok, men hvis mine resultater ligger i området 3000-3100 vælger acces alligevel at begynde ved 0, dvs min kurve bliver alt for flad.
Avatar billede Slettet bruger
12. september 2008 - 11:24 #3
og der står ikke 0 som fast min!~)
Avatar billede sigyn Seniormester
12. september 2008 - 11:32 #4
Den begynder ved 0, med eller uden flueben
Avatar billede Slettet bruger
12. september 2008 - 14:33 #5
så må vi smøre ærmerne op!~)

hvis du har din office web components installeret og laver en reference i vba, den kunne eksempelvis ligge heromkring: program files\microsoft shared\web components\10\1033\owcvba10.chm

.. så kan du stort set styre alt ved dine charts, det er lidt tricky at få det hele til at spille, men for dit vedkommende skal du ind på noget i retningen af:

private oChart as ChChart
private oValueAxis as ChAxis

private sub MinimumTalFelt_Afterupdate()
Set oChart = Form_DinGraf.ChartSpace.charts(0)
Set oValueAxis = oChart.Axes(1)
oValueAxis.Scaling.Minimum = Me.MinimumTalFelt
end sub

talfeltet kan ikke indeholde null, så det skal du lige tage med!~)

i dette tilfælde har jeg refereret til en form kaldet dinGraf, som er selve pivot grafen, men hvis du har indsat en graf på anden måde, så skal du selvfølgelig referere til denne beliggenhed... eks. form_DinFormular.NavnPåGrafen.Chartspace.charts(0)

go' weekend!~)
Avatar billede Slettet bruger
12. september 2008 - 14:36 #6
ps. ang. null værdier, så kan du:

If IsNull(Me.MinimumTalFelt) Then
oValueAxis.Scaling.HasAutoMinimum = True
Else
oValueAxis.Scaling.Minimum = Me.MinimumTalFelt
End If
Avatar billede Slettet bruger
12. september 2008 - 21:38 #7
jeg kom til at tænke på noget... du kunne lave en dmin og dmax på din forespørgsel og så bruge værdien f.eks. 0.9*dmin i stedet for me.minimumtalfelt og 1.1*dmax hvis du skal have en til maximum. Så ville grafområdet altid være +/- 10% af udsvinget af dit datasæt!~)
Avatar billede Slettet bruger
12. september 2008 - 21:40 #8
altså 10% større både i top og i bund.... eller hvordan man nu skal forsøge at forklare!~)
Avatar billede sigyn Seniormester
18. september 2008 - 09:55 #9
Jeg har lige været væltet af pinden et par dage.....

Jeg tror jeg er nødt til at have det skåret ud i pap, gerne med udgangspunkt i min ovenstående tabel, som godt nok ser lidt rodet ud i dette skærmbillede. Resultatet, min og max skal jo være kurver på grafen. De to kolonner længst til højre, som er "øverste" og "nederste" er lige præcis 10% mere/mindre end max og min :-), så at lave det om til dmin og dmax skulle ikke være noget problem.

Det her:program files\microsoft shared\web components\10\1033\owcvba10.chm

hvor finder jeg det ?? Ordtet "shared" for mig til at frygte, at det er noget jeg ikke umiddelbart har adgang til
Avatar billede sigyn Seniormester
22. maj 2009 - 08:12 #10
Jeg lukker spørgsmålet nu, da jeg har fået denne løsning andetstedsfra. Min og Mak er skjulte felter i min forespørgslel med en DMin og Dmaks

Private Sub Form_Open(Cancel As Integer)
 
  Dim g As Graph.Chart 'MSGraph.Chart.8 'Microsoft Graph Chart
       
        Set g = Me.Diagram4.Object
        g.Axes(xlValue).MinimumScale = Me.Min
        g.Axes(xlValue).MaximumScale = Me.Max
       
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester