AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DBChart zeichnet neuen Punkt nicht ans Ende

Ein Thema von Helmi · begonnen am 21. Mai 2016 · letzter Beitrag vom 24. Mai 2016
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#1

DBChart zeichnet neuen Punkt nicht ans Ende

  Alt 21. Mai 2016, 19:34
Hallo,

ich hab das Problem, dass bei einem DBChart ein neuer Datensatz nicht am Ende des Chart gezeichnet wird, sondern am Anfang.

Eine Serie erzeuge ich wie folgt:
Delphi-Quellcode:
  //Graph für "Temperatur 1"
  Graph_Temperatur_1 := TLineSeries.Create(DBChart_Filter);
  Graph_Temperatur_1.ParentChart := DBChart_Filter;
  Graph_Temperatur_1.DataSource := ClientDataSet;

  Graph_Temperatur_1.Name := 'Temp_1';
  Graph_Temperatur_1.Title := 'Temperatur 1';
  Graph_Temperatur_1.XLabelsSource := 'Uhrzeit';
  Graph_Temperatur_1.YValues.ValueSource := 'TempSensor_1';
  Graph_Temperatur_1.VertAxis := aLeftAxis;
  Graph_Temperatur_1.ShowInLegend := false;
  Graph_Temperatur_1.Color := clRed;
Ein neuer Datensatz wird mittels ClientDataSet.Insert hinzugefügt.

Dabei ist es unabhängig, ob ein Filter im ClientDataSet aktiv ist oder nicht.
Deaktivier oder aktivier ich den Filter, so stimmt danach die Ansicht wieder, bis zum nächsten Datensatz.

Ich hab es schon mit
Delphi-Quellcode:
DBChart_Filter.Refresh;
DBChart_Filter.RefreshData;
probiert, leider ohne einem erfolgreichen Ergebnis.

Auch hab ich mal probiert, den Filter aus- und wieder einzuschalten.
Leider auch ohne Erfolg.

Im angehängten Bild erkenn ich es an den Datum, dass die X-Achse beschreibt.

Wie kann ich dem DBChart beibringen, dass er immer ans Ende zeichnet?
(Scheint nur ein Zeichnungsproblem zu sein)

TeeChart-Version: Standard RAD XE2 Update4
Miniaturansicht angehängter Grafiken
unbenannt.png  
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: DBChart zeichnet neuen Punkt nicht ans Ende

  Alt 21. Mai 2016, 19:42
Warum Insert und nicht Append?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#3

AW: DBChart zeichnet neuen Punkt nicht ans Ende

  Alt 21. Mai 2016, 19:46
Warum Insert und nicht Append?
weil ich Append nicht kannte
muss ich gleich mal ausprobieren

[edit]
cool - Danke! - funktioniert
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<

Geändert von Helmi (21. Mai 2016 um 19:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#4

AW: DBChart zeichnet neuen Punkt nicht ans Ende

  Alt 22. Mai 2016, 08:27
Moin...

Den Unterschied von Append und Insert kennst du jetzt. Sich aber darauf zu verlassen das die Datensätze damit immer in der korrekten Reihenfolge vorliegen ist gefährlich. Um die Reihenfolge sicherzustellen sollte die Datenmenge vor dem Anzeigen nach deinen Kriterien sortiert sein / werden...entweder per Index oder schon bei der Abfrage via SQL.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#5

AW: DBChart zeichnet neuen Punkt nicht ans Ende

  Alt 22. Mai 2016, 08:54
hättest du dafür ein Beispiel?

Ich bin auf dem Gebiet Datenbank ein Neuling und verwende jetzt nur eine MyBase-Datenbank bestehend aus einem ClientDataSet
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#6

AW: DBChart zeichnet neuen Punkt nicht ans Ende

  Alt 22. Mai 2016, 09:11
Hallöle...

Du hast eine Datenbank. (zeige die Tabellenstruktur) Du holst die Daten aus der Datenbank. (wie?) Dann packst du die Daten in ein ClientDataSet? Zeige mal wie du das machst. Dann können wir darauf aufbauend optimieren.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#7

AW: DBChart zeichnet neuen Punkt nicht ans Ende

  Alt 22. Mai 2016, 09:17
in die Datenbank wird so geschrieben:
Delphi-Quellcode:
    ClientDataSet.Append;

    ClientDataSet.FieldValues['Datum'] := DateToStr(now);
    ClientDataSet.FieldValues['Uhrzeit'] := TimeToStr(now);

    ClientDataSet.FieldValues['Kanal'] := StrToIntDef(StringList[0][2], 0);

    ClientDataSet.FieldValues['TempSensor_1'] := StrToFloatDef(StringList[3], 0.0);
    ClientDataSet.FieldValues['TempSensor_2'] := StrToFloatDef(StringList[4], 0.0);
    ClientDataSet.FieldValues['TempSensor_3'] := StrToFloatDef(StringList[5], 0.0);
    ClientDataSet.FieldValues['TempSensor_4'] := StrToFloatDef(StringList[6], 0.0);
    ClientDataSet.FieldValues['TempSensor_5'] := StrToFloatDef(StringList[7], 0.0);
    ClientDataSet.FieldValues['TempSensor_6'] := StrToFloatDef(StringList[8], 0.0);
    ClientDataSet.FieldValues['TempSensor_7'] := StrToFloatDef(StringList[9], 0.0);
    ClientDataSet.FieldValues['TempSensor_8'] := StrToFloatDef(StringList[10], 0.0);

    ClientDataSet.FieldValues['FeuchteSensor_1'] := StrToIntDef(StringList[11], 0);
    ClientDataSet.FieldValues['FeuchteSensor_2'] := StrToIntDef(StringList[12], 0);
    ClientDataSet.FieldValues['FeuchteSensor_3'] := StrToIntDef(StringList[13], 0);
    ClientDataSet.FieldValues['FeuchteSensor_4'] := StrToIntDef(StringList[14], 0);
    ClientDataSet.FieldValues['FeuchteSensor_5'] := StrToIntDef(StringList[15], 0);
    ClientDataSet.FieldValues['FeuchteSensor_6'] := StrToIntDef(StringList[16], 0);
    ClientDataSet.FieldValues['FeuchteSensor_7'] := StrToIntDef(StringList[17], 0);
    ClientDataSet.FieldValues['FeuchteSensor_8'] := StrToIntDef(StringList[18], 0);

    ClientDataSet.FieldValues['TempKombiSensor'] := StrToFloatDef(StringList[19], 0.0);
    ClientDataSet.FieldValues['FeuchteKombiSensor'] := StrToIntDef(StringList[20], 0);

    ClientDataSet.FieldValues['Windgeschwindigkeit'] := StrToFloatDef(StringList[21], 0.0);
    ClientDataSet.FieldValues['Niederschlag'] := StrToIntDef(StringList[22], 0);
    ClientDataSet.FieldValues['Regen'] := StrToBoolDef(StringList[23], false);
(die StringList dient zum Aufteilen eines Strings, den ich aus einer seriellen Schnittstelle erhalte)

DBChart holt sich die Daten direkt über Lineseries aus dem ClientDataSet (siehe erstem Post)

das wars

[edit]
die Struktur:
Delphi-Quellcode:
      ClientDataSet.FieldDefs.Add('ID', ftAutoInc, 0, false);

      ClientDataSet.FieldDefs.Add('Datum', ftDate);
      ClientDataSet.FieldDefs.Add('Uhrzeit', ftTime);

      ClientDataSet.FieldDefs.Add('Kanal', ftSmallInt);

      ClientDataSet.FieldDefs.Add('TempSensor_1', ftFloat);
      ClientDataSet.FieldDefs.Add('TempSensor_2', ftFloat);
      ClientDataSet.FieldDefs.Add('TempSensor_3', ftFloat);
      ClientDataSet.FieldDefs.Add('TempSensor_4', ftFloat);
      ClientDataSet.FieldDefs.Add('TempSensor_5', ftFloat);
      ClientDataSet.FieldDefs.Add('TempSensor_6', ftFloat);
      ClientDataSet.FieldDefs.Add('TempSensor_7', ftFloat);
      ClientDataSet.FieldDefs.Add('TempSensor_8', ftFloat);

      ClientDataSet.FieldDefs.Add('FeuchteSensor_1', ftSmallInt);
      ClientDataSet.FieldDefs.Add('FeuchteSensor_2', ftSmallInt);
      ClientDataSet.FieldDefs.Add('FeuchteSensor_3', ftSmallInt);
      ClientDataSet.FieldDefs.Add('FeuchteSensor_4', ftSmallInt);
      ClientDataSet.FieldDefs.Add('FeuchteSensor_5', ftSmallInt);
      ClientDataSet.FieldDefs.Add('FeuchteSensor_6', ftSmallInt);
      ClientDataSet.FieldDefs.Add('FeuchteSensor_7', ftSmallInt);
      ClientDataSet.FieldDefs.Add('FeuchteSensor_8', ftSmallInt);

      ClientDataSet.FieldDefs.Add('TempKombiSensor', ftFloat);
      ClientDataSet.FieldDefs.Add('FeuchteKombiSensor', ftSmallInt);

      ClientDataSet.FieldDefs.Add('Windgeschwindigkeit', ftFloat);
      ClientDataSet.FieldDefs.Add('Niederschlag', ftInteger);
      ClientDataSet.FieldDefs.Add('Regen', ftBoolean);
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<

Geändert von Helmi (22. Mai 2016 um 09:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#8

AW: DBChart zeichnet neuen Punkt nicht ans Ende

  Alt 22. Mai 2016, 10:09
Sooo...

Es war wohl noch zu früh am Morgen und zu wenig Kaffee. MyBase mit einer Datenbank gleichzusetzen war schon mal ein Fehler. Mit MyBase kannst du Daten eines ClientDataSets speichern und laden. Mit einer relationalen Datenbank und den SQL Möglichkeiten hat das nix zu tun.

Um die Sortierung in deinem Fall zu realisieren mußt du auf dem ClientDataSet nach dem Anlegen der Felder einen Index erzeugen.
ClientDataSet.AddIndex('DATUM', 'DATUM', []); Dann weist du den Index zu
ClientDataSet.IndexName := 'DATUM'; siehe: http://docwiki.embarcadero.com/CodeE...Delphi%29#Code

Tipps:
1.
Delphi-Quellcode:
ClientDataSet.FieldDefs.Add('Datum', ftDate);
      ClientDataSet.FieldDefs.Add('Uhrzeit', ftTime);
... Datum und Zeit gehören in ein Datenbankfeld (ftDateTime)
2. Schnell wirst du mit MyBase an die Grenzen stoßen und eine richtige Datenbank wollen. Mach es lieber gleich. Die Zeit ist gut genutzt und nicht verschwendet. Persönlich bevorzuge ich Firebird. (free, schnell installiert, ein Datenbankfile, sowohl lokal (embedded) als auch mit Server und Multiuser nutzbar, es gibt reichlich Infos und Dokumentationen) https://www.delphi-treff.de/tutorial...-und-firebird/
3. Bei richtiger DB nur via SQL http://www.w3schools.com/sql/

Geändert von haentschman (22. Mai 2016 um 10:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.336 Beiträge
 
Delphi XE2 Professional
 
#9

AW: DBChart zeichnet neuen Punkt nicht ans Ende

  Alt 22. Mai 2016, 10:12
Danke für die Infos.

Ich hab bislang noch kein gutes Tutorial gefunden, dass mich auf den Weg der Datenbankverwendung führt
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: DBChart zeichnet neuen Punkt nicht ans Ende

  Alt 22. Mai 2016, 10:14
https://www.delphi-treff.de/tutorials/datenbanken/
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz