Hallo

Welkom, Gast. Alsjeblieft inloggen of registreren.

Recent

495 gasten, 0 leden

Welkom, Gast. Alsjeblieft inloggen of registreren.

28 april 2024, 05:55:47

Login met gebruikersnaam, wachtwoord en sessielengte

Nieuws

Welkom op het vernieuwde NL Computer Forum!

Auteur Topic: MSChart for VB6  (gelezen 22685 keer)

0 leden en 1 gast bekijken dit topic.

Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
Re: MSChart for VB6
« Reactie #60 Gepost op: 12 juni 2012, 12:12:30 »
Hoi Peter,
Hierbij de gevraagde code. Deze is van Command2 i.p.v. Command5, maar de in Command2 gebruikte code is grotendeels die van Command 5 en is daarvan overgenomen. Om te testen of de zwarte balk veroorzaakt wordt door X-as labels heb ik het array dat de labels bevat uitgebreid tot 5000 regels om het hele grafiekbereik te kunnen vullen en heb bij kortere grafieken alle niet door waarden bezette regels op "" gezet. Dan zou de balk moeten verdwijnen, maar dat gebeurde niet.
MSChart is een vreemd geval. Dingen die je niet codeert komen er als bijproduct toch in. Er moet toch een mogelijkheid zijn die R-labels weg te krijgen?
 
 
 
Jan
 

Offline Peter

  • Sysop
  • *****
  • Berichten: 5.683
  • Geslacht: Man
Re: MSChart for VB6
« Reactie #61 Gepost op: 12 juni 2012, 22:44:32 »
Hoi Jan,

Is AantalDagRecords hetzelfde als het aantal tijdstippen in Grafiek ?
Je gebruikt een database om de grafiek te vullen. Wat me al opviel aan je laatste screenshots was het aantal tijdstippen, namelijk 122304. Dat zijn er nogal wat!

Het probleem is dat alleen de labels binnen de range 'startpunt' .. 'aantal dagen' aangepast worden.
De tijdstip-labels na 'aantal dagen' staan ook in de grafiek omdat je de complete array grafiek aan het MSChart1 component koppelt. Die labels worden dus niet bewerkt.

Controleer als eerste of AantalDagRecords goed is.

Het lijkt me handiger om, na data-selectie middels 'startpunt' en 'aantal dagen', alleen die data uit array Grafiek te kopieren naar een tijdelijke array Hulp en die vervolgens aan het MSChart1 component te koppelen.


Peter

Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
Re: MSChart for VB6
« Reactie #62 Gepost op: 13 juni 2012, 01:52:43 »
Hoi Peter,
AantalDagrecords is niet het aantal gegevenspunten in de grafiek, maar het totale aantal records in de database (= gegevens van alle aandelen in de database, waaruit een bepaald aandeel geselecteerd wordt om in grafiek te zetten). Het aantal gegevenspunten in de grafiek is maar 1044 en daarvan worden er in de ene grafiek maar 200 in grafiek gezet en dag 844 is dus het begin en 1044 het einde van de grafiek en 200 het aantal gegevenspunten. In Sub MakenDagGrafiekKVPer Fonds worden er dus uit ruim 122000 aantal gegevenspunten 1044 geselecteerd en kun je diverse keren een ander aandeel kiezen om in grafiek te zetten. Dus Aantal Dagen in de grafiek is altijd het aantal gegevenspunten dat in grafiek gezet wordt.
Beide grafieken hebben dus een verschillend aantal gegevenspunten en moeten dus een verschillende lengte van de grafiek hebben in de twee screenshots.
 
 
Jan

Offline Peter

  • Sysop
  • *****
  • Berichten: 5.683
  • Geslacht: Man
Re: MSChart for VB6
« Reactie #63 Gepost op: 13 juni 2012, 21:49:56 »
Hoi Jan,

Kopieer en plaats de volgende code direct na de aanroep van MakenDagGrafiekKVPerFonds():
Call MsgBox("Grafiek = " & LBound(Grafiek, 1) & ".." & UBound(Grafiek, 1) & "," & LBound(Grafiek, 2) & ".." & UBound(Grafiek, 2) & vbCrLf & AantalDagRecords & vbCrLf & NumRows)

Start je programma, klik op Command2 en maak een screenshot van de msgbox melding.
Post die screenshot vervolgens.


Peter

Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
Re: MSChart for VB6
« Reactie #64 Gepost op: 14 juni 2012, 01:53:30 »
Hoi Peter,
Hier is het screenshot.

Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
Re: MSChart for VB6
« Reactie #65 Gepost op: 14 juni 2012, 09:27:52 »
Hoi Peter,
Hierbij 2 screenshots. Beide grafieken hebben 500 waarnemingen en de ene grafiek is geheel bezet en de andere maar voor een derde. Hoe kan zoiets. Kennelijk speelt ook de dimensie van het array waarin de gegevens staan mee bij het bepalen hoe de grafiek eruit gaat zien. Al met al is MSChart een vreemd stukje software, typisch Microsoft: onlogisch.
Wat denk je, is het niet beter uit te kijken naar een andere chartcomponent? Een die alleen doet wat je codeert er er niet zelf iets bij  verzint.
 
 
Jan
 

Offline Peter

  • Sysop
  • *****
  • Berichten: 5.683
  • Geslacht: Man
Re: MSChart for VB6
« Reactie #66 Gepost op: 14 juni 2012, 21:00:41 »
Hoi Jan,

De screenshot van de MsgBox() geeft volgens mij precies aan waar het mis zit.
In je code zeg je:
Citaat
' Ophalen dagvoorspelgegevens.
Call MakenDagGrafiekKVPerFonds(Grafiek(), KVDatum(), AantalDagRecords, NumRows, FondsNaam)        ' NumRows is aantal gevonden records.

De Msgbox zegt dat er 5001 elementen in de array Grafiek zitten, maar NumRows heeft de waarde 1046. Ik zou denken dat deze 2 dezelfde waarde moeten hebben!?
Dit verklaart waarom je grafiek dus maar voor pakweg 1/5 gevuld is. De rest, 4/5, wordt door de code ongemoeid gelaten, met o.a. de Rxxx label-teksten tot gevolg.
Dit wordt nogmaals bevestigd door screenshot 'ScreenShot21012012026.JPG'. Het is wat onduidelijk te zien maar als je ver genoeg inzoomt zie je label-teksten ala R5000 of R5002.

Wordt de array Grafiek soms op een vaste, maximaal te verwachtte grootte ingesteld, 0..5000?

Citaat
Wat denk je, is het niet beter uit te kijken naar een andere chartcomponent? Een die alleen doet wat je codeert er er niet zelf iets bij  verzint.
Als je een grafiek component niet goed aanstuurt, krijg je ook geen goede grafiek. Een ander merk grafiek component zal daar niets aan veranderen.
MSChart heeft zo zijn nukken, oftewel MS logica, maar dat heeft ieder programma of component. Programmeurs zijn niet anders.  ;)


Peter

Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
Re: MSChart for VB6
« Reactie #67 Gepost op: 15 juni 2012, 01:03:54 »
Hoi Peter,
Volgens mij klopt je verhaal grotendeels. De array Grafiek was inderdaad ingesteld op de maximaal te verwachten grootte en ik ging ervan uit dat MSChart alle gegevens in grafiek zou zetten en de lege cellen zou negeren. Ik had al eerder de dimensie van array Grafiek een keer als proef precies gelijk gemaakt aan het aantal regels dat in de grafiek moest komen en kreeg toen weliswaar de hele grafiek, maar ook de zwarte balk. Ten bewijze daarvan voeg ik een screenshot daarvan bij.
Ik ben het voor 100% met je eens dat als je een grafiekcomponent (of welke andere componentn dan ook) verkeerd aanstuurt hij verkeerd zal werken. Maar wat ik niet verwacht is dat de software er iets bij verzint dat niet opzettelijk gecodeerd is (in dit geval de zwarte balk).
 
 
 
Jan

Offline jvdpeet †
  • Senior lid
  • ****
  • Berichten: 365
  • Geslacht: Man
Re: MSChart for VB6
« Reactie #68 Gepost op: 15 juni 2012, 09:10:12 »
Hoi Peter,
Correctie. Het blijkt maar weer dat het beter is er eerst een nachtje over te slapen en dan pas commentaar te leveren. Je hebt niet gedeeltelijk maar helemaal gelijk. Doordat ik alleen de laatste 500 in grafiek had gezet en niet de hele 1047 kwam de zwarte balk tevoorschijn. Bij 0 te beginnen en alle gegevens in grafiek te zetten verdween de balk, zoals uit aangehecht  screenshot blijkt. Om de grafiek wat uitgesprokener te maken wil ik nu nog de Y-schaal veranderen en dan is de grafiek compleet. Wederom weer veel dank voor je deskundige adviezen.
 
 
 
Jan

Offline Peter

  • Sysop
  • *****
  • Berichten: 5.683
  • Geslacht: Man
Re: MSChart for VB6
« Reactie #69 Gepost op: 15 juni 2012, 19:15:31 »
Hoi Jan,

Citaat
Om de grafiek wat uitgesprokener te maken wil ik nu nog de Y-schaal veranderen en dan is de grafiek compleet.
Dat lijkt me ook wel handig. Plus het grafiek component zelf hoger maken kan natuurlijk ook.
Succes.


Peter