Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[ASP OWC11] Grafiek geeft data verkeerd weer

Pagina: 1
Acties:
  • 177 views sinds 30-01-2008
  • Reageer

  • SierdW
  • Registratie: April 2004
  • Laatst online: 23-09 12:48
Laat ik beginnen met het feit dat ik absoluut geen programmeur ben, meer een hobbyist. Ik ben bezig met een ASP pagina waarin via Office Web Components (OWC 11) een mooi grafiekje naar voren wordt getoverd. Het gaat om een grafiek die voor een gebruiker een totaal aantal stappen laat zien wat hij per dag heeft gezet. Deze informatie staat allemaal netjes in een SQL tabel in de kolommen 'datum' en 'totaal_stappen'. Omdat voor sommige data meerdere invoeren kunnen zijn, moeten de totaal_stappen wel even worden getotalliseerd per dag. Dit hoop ik goed te doen via de volgende Query en asp code:
code:
1
SELECT SUM(Totaal_Stappen) AS stappen, datum FROM " & TblGegevens & " WHERE (id LIKE " & id & ") GROUP BY datum


Visual Basic:
1
2
3
4
5
6
    Do While Not rs1.EOF
        aData(i) = rs1("datum")
        aStappen(i) = rs1("stappen")
        i = i + 1
        rs1.MoveNext
    Loop


en

Visual Basic:
1
2
    cht.SetData c.chDimCategories, c.chDataLiteral, aData
    cht.SeriesCollection(0).SetData c.chDimValues, c.chDataLiteral, aStappen


Als ik allemaal data heb ik dezelfde maand, neem bijvoorbeeld augustus, dan treedt geen probleem op en kan ik het volgende grafiekje verkrijgen met de daarbijbehorende array:

| datum | totaal_stappen
| 13-8-2007 | 15000
| 14-8-2007 | 10000
| 16-8-2007 | 15000
| 17-8-2007 | 21500
| 18-8-2007 | 30000
| 19-8-2007 | 40000
| 20-8-2007 | 40000
| 25-8-2007 | 15000
| 28-8-2007 | 5000
| 28-8-2007 | 7500
| 31-8-2007 | 50000

Afbeeldingslocatie: http://www.weidema.eu/images/goed.gif

Echter, zodra ik een of meer dagen uit een andere maand heb loopt ineens de hele grafiek in het honderd, de horizontale en verticale as zijn ineens helemaal anders en slaat nergens meer op. Ik heb geen idee waar dit door komt:

| datum | totaal_stappen
| 11-7-2007 | 40000
| 31-7-2007 | 15000
| 13-8-2007 | 15000
| 14-8-2007 | 10000
| 16-8-2007 | 15000
| 17-8-2007 | 21500
| 18-8-2007 | 30000
| 19-8-2007 | 40000
| 20-8-2007 | 40000
| 25-8-2007 | 15000
| 28-8-2007 | 5000
| 28-8-2007 | 7500
| 31-8-2007 | 50000

Afbeeldingslocatie: http://www.weidema.eu/images/fout.gif

Is er iemand die weet wat hier gebeurd, en hoe ik dit probleem kan voorkomen? Als er meer code nodig is dan hoor ik het graag en zal ik dat posten.

Verwijderd

In welk formaat staat het veld 'datum' in je tabel? Als je alleen groupt op datum, mag 28-8 nooit 2x in je resultset zitten.
En blijkbaar snapt OWC je datumformaat niet, en ziet 11 juli als 4 november. Geen idee waarom, maar ik denk wel dat je 't in die hoek moet zoeken.

Edit: plaatje nog 's beter bekeken, en de caret aan het eind ligt ietsje voorbij 4 november. Ik schat zo ongeveer op 7-11...
OWC werkt default blijkbaar in US datum formaat (mm-dd-yyyy i.p.v. dd-mm-yyyy). Misschien kun je dit wijzigen door de culture of uiculture aan te passen, maar anders is 't misschien handiger om de datum in je array al om te zetten naar US-formaat.

[ Voor 40% gewijzigd door Verwijderd op 18-08-2007 17:49 ]


  • SierdW
  • Registratie: April 2004
  • Laatst online: 23-09 12:48
Formaat van 'datum' is DateTime. Ik heb zoals je aangeeft de session.lcid veranderd van 1043 naar 1033. Echter, de grafiek verandert totaal niet. Zodra ik het script aanpas en de data laat schrijven als tekst staat deze wel goed in de amerikaanse notatie:

7/11/2007 | 40000
7/31/2007 | 15000
8/13/2007 | 15000
8/14/2007 | 10000
8/16/2007 | 15000
8/17/2007 | 21500
8/18/2007 | 30000
8/19/2007 | 40000
8/20/2007 | 40000
8/25/2007 | 15000
8/28/2007 | 12500
8/31/2007 | 50000

Ik snap er niks van :?

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
Vermoedelijk gebruik je een type grafiek die niet werkt zoals jij dat wilt? In Excel bijvoorbeeld moet je voor grafieken met punten geen constante x-as interval hebben een spreiding grafiek gebruiken.

Wellicht dat de OWC componenten ook een dergelijk type grafiek hebben

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • SierdW
  • Registratie: April 2004
  • Laatst online: 23-09 12:48
Ik denk niet dat dat het probleem is. Ik heb allerlei verschillende grafieken geprobeerd, en allen geven een compleet verkeerde grafiek. Dit is trouwens het stukje code wat de data aan de grafiek koppelt en de grafiek maakt:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
    Dim ChartSpace1, Cht, c
    Set ChartSpace1 = CreateObject("OWC11.ChartSpace")
    Set c = Chartspace1.Constants
    Set cht = Chartspace1.Charts.Add
    cht.Type= c.chChartTypeLineMarkers
    cht.SetData c.chDimSeriesNames, c.chDataLiteral, "Totaal stappen"
    cht.SetData c.chDimCategories, c.chDataLiteral, aData
    cht.SeriesCollection(0).SetData c.chDimValues, c.chDataLiteral, aStappen
    cht.SeriesCollection(0).Interior.Color = "Rosybrown"
    cht.PlotArea.Interior.Color = "Wheat"
    Chartspace1.Border.Color = c.chColorNone
    Response.BinaryWrite Chartspace1.GetPicture ("gif", 600, 400)


Misschien dat iemand daar een fout in kan ontdekken? Erg vreemd dat dit niet goed werkt, originele code komt van Microsoft, maar daarin wordt niet gewerkt met een kolom datum.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
Om de waarde van een datum te berekenen zet MS em eerst om naar een double. Misschien als je dat zelf doet voor je datumwaarden dat je een logisch verband kunt ontdekken.

Toch denk ik dat je een scatter grafiek nodig heb omdat je x-interval niet constant is :P

linkje: How To Use the Chart Web Component with Visual Basic

Welliswaar voor VB maar zal toch van toepassing zijn

[edit]

Ok heb het eerste voorbeeld in de link iets aangepast, dit lijkt wel te werken

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    Dim xValues As Variant, yValues As Variant
    
    xValues = Array(#1/1/2007#, #1/2/2007#, #1/3/2007#, #1/4/2007#, #1/5/2007#, #1/6/2007#, #1/7/2007#, #1/8/2008#)
    yValues = Array(0, 1, 2, 3, 4, 5, 6, 7)
    
    'Create a new chart
    Dim oChart As WCChart
    ChartSpace1.clear
    ChartSpace1.Refresh
    Set oChart = ChartSpace1.Charts.Add
    
    'Add a series to the chart with the x-values and y-values
    'from the arrays and set the series type to a column chart
    Dim oSeries As WCSeries
    Set oSeries = oChart.SeriesCollection.Add
    With oSeries
        .Caption = "1995"
        .Type = chChartTypeScatterLine

        .SetData chDimXValues, chDataLiteral, xValues
        .SetData chDimYValues, chDataLiteral, yValues
       
    End With
    
    oChart.Axes(chAxisPositionBottom).NumberFormat = "yyyy-MM-dd"


Heb de laatste waarde iets vernaggeld om te kijken of het ding inderdaad snapt dat het data zijn op de x-as en dat lijkt hij inderdaad te doen

[ Voor 94% gewijzigd door farlane op 20-08-2007 10:56 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 28-11 11:15

sopsop

[v] [;,,;] [v]

Probeer je datums eens als yyyy-mm-dd te zetten.

  • SierdW
  • Registratie: April 2004
  • Laatst online: 23-09 12:48
Hmmm, duidelijk is dat OWC zelf dingen met die datum gaat doen, ookal staan de waarden vast in de array. Ik heb nu eerst even besloten om hem niet als datum naar de array te schrijven, maar als string door er een dagnummer voor te zetten. Ik laat hem dus in de array de volgende string schrijven, met hieronder het resultaat. Enige nadeel is dat er geen schaalverdeling in zit, maar dat is voor zover ik nu weet niet erg, het gaat uiteindelijk om het onderscheiden van een trend:

Visual Basic:
1
aData(i) = "Dag " & invoernummer & ": " & rs1("datum")

Afbeeldingslocatie: http://www.weidema.eu/images/beter.gif

Mocht er nog iemand met een beter idee komen, aangezien dit natuurlijk nog niet erg netjes is, dan hoor ik het graag.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
Erm, heb je naar mijn voorbeeld gekeken?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • SierdW
  • Registratie: April 2004
  • Laatst online: 23-09 12:48
Heb ik, echter jouw voorbeeld hoort bij OWC9. Verder heb ik de code exact hetzelfde. Ik heb tevens geprobeerd de datum via andere formaten aan te bieden aan OWC, maar hij gooit het alle keren overhoop zodra één of twee dagen in een andere maand vallen. Ik neem daarom in de eerste instantie maar genoegen met dit resultaat, aangezien het met allemaal wat 'boven de pet' gaat. ;)
Pagina: 1