Diagramm

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von herrpit.

    Hallo!

    Ich erstelle ein Diagramm mit VB2005, indem ich aus Excel Daten hole. Je mehr Datenpunkte, desto länger dauert die Aktion. Allerdings bin ich mit der "Grundschnelligkeit" schon mal nicht einverstanden. Will ich zB einen Tag minütlich darstellen (x-Werte) und habe etwa 4-5 y-Werte dazu, dauert das schon mal (je nach Rechnerleistung) 1 min und länger zum Erstellen des Diagramms. Liegt das an der Verbindung mit Excel? Geht das irgendwie schneller (so wie zB innerhalb von Excel)?
    VB2005
    Hi!

    Es liegt wahrscheinlich an Excel bzw. an der Verbindung zwischen Excel und VB...
    Wie zeichnest du das Diagramm (Picturebox?) und wie liest du die Daten aus der xls aus?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mad Andy“ ()

    Ja, du hast recht, ich mache das über ne PictureBox.
    Ich habe ein Koordinatennetz als Bitmap im Hintergrund.
    Die Daten von Excel bekomme ich über folgenden Weg:

    For i = 1 to LetzteKoordinaten
    xKoordinateA(i) = CSng(xlDatei.Workbooks(DateiNameExcel).Sheets(SheetName).Cells(ErsteKoordinaten + i, 40).Value)
    yKoordinateA(i) = CSng(xlDatei.Workbooks(DateiNameExcel).Sheets(SheetName).Cells(ErsteKoordinaten + i, 43).Value)
    ...
    Next i

    Und dann eben:

    Diagramm.DrawCurve(New Pen(Color.Gray, 3), KoordinatenA, 0)
    Diagramm.DrawCurve(New Pen(Color.LightGray, 0.5), KoordinatenB, 0)
    Diagramm.DrawCurve(New Pen(Color.Coral, 0.5), KoordinatenC, 0)
    ...
    PictureBoxDiagramm.Refresh()
    Diagramm.Dispose()
    Du kannst mal nach alternativen für den Excel-Zugriff googlen...
    Ich hab sowas noch nie unter .net gemacht.

    Du kannst die geschwindigkeit aber mal testen (also was wie lange dauert):

    Du deklerierst eine nue Variable als Long deklerieren und nenns sie t
    Vor des jeweiligen aktionsblock schreibst du t = Environment.TickCount (oder so)
    Und nach dem Block schreibst du Messagbox.Show ("Die Aktion hat " & Environment.Tickcount-t & " gedauert.")
    Nun, ich hätte mal gesagt, ich transferiere das Ganze in ne Datenbank (MySQL oder Access(JetEngine)). Müsst ich mich zwar erstmal auseinandersetzen damit, aber das sollte machbar sein, denke ich.
    Vielleicht geht's damit schneller. Weil so ist das bei einem im Hintergrund noch laufenden Prozess (Datenerfassung) nicht tragbar.
    hab ich von VB6 eigentlich keine Ahnung
    Das war keine Anspielung, dass du VB6(-Wissen) brauchst o.Ä...

    Weißst du, wie man auf Datenbanken via VB2005 zugreift ?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mad Andy“ ()