AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Das große WIE, Chart aktuallisieren, Daten in textfiles
Thema durchsuchen
Ansicht
Themen-Optionen

Das große WIE, Chart aktuallisieren, Daten in textfiles

Ein Thema von Stecky2000 · begonnen am 1. Jun 2008 · letzter Beitrag vom 15. Jul 2008
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Stecky2000

Registriert seit: 7. Mai 2008
Ort: Trebur
66 Beiträge
 
Delphi 2010 Professional
 
#31

Re: Das große WIE, Chart aktuallisieren, Daten in textfiles

  Alt 6. Jun 2008, 22:00
Danke, habs schon geholt und auch schon installiert.

Es funktioniert bereits.

Das bedeutet, ich mach jetzt auf dieser Umgebung weiter und kopiere es später mit der embedded auf einen anderen Rechner zum Testen.

Ich will ja den Beweis sehen, dass es tatsächlich ohne DB-Installation geht, als Single-User versteht sich.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Das große WIE, Chart aktuallisieren, Daten in textfiles

  Alt 6. Jun 2008, 22:11
Das funktioniert, da im embedded-(Server-)Client ein Server steckt
Markus Kinzler
  Mit Zitat antworten Zitat
Stecky2000

Registriert seit: 7. Mai 2008
Ort: Trebur
66 Beiträge
 
Delphi 2010 Professional
 
#33

Re: Das große WIE, Chart aktuallisieren, Daten in textfiles

  Alt 11. Jun 2008, 08:48
Da bin ich wieder mit einer Frage zu StringGrid, DBGrid und DB.

Was macht am meisten Sinn, unter besonderer Berücksichtigung der Performance?

Daten in ein Array bzw. StringGrid berechnen und dann in eine DB (Firebird) zu schieben,
oder
die Daten direkt in ein BDGrid und somit in die DB zu schieben?

Es ist so, ich habe in einem Dienstplan verschiedene Anfangs- und Endzeiten.
Nicht alle sind mit Personal belegt. Also fahre ich mit Schleifen über die Belegung,
die Uhrzeiten und die Tage und trage entsprechend Daten, derzeit in ein StringGrid ein.

Derzeit vergleiche ich die Uhrzeit im StringGrid.Spalte0 (5-Minuten-Raster) mit den den Anfangs- und Endzeiten der belegten Dienstzeit und trage ein oder eben nicht.

Ich könnte mir vorstellen, dass das auf DBGrid, sprich DB länger dauert als im StringGrid mit anschliessenden kompletten Schreiben in die DB.

Ist das so, oder liege ich falsch und es macht von der Performance nichts aus?

EDIT: sollte ich diese Frage in einen Datenbank.Thread verschieben?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Das große WIE, Chart aktuallisieren, Daten in textfiles

  Alt 11. Jun 2008, 08:59
Daten direkt in Datenbank scheiben, das Grid wird dann entsprechend aktualisiert.
Markus Kinzler
  Mit Zitat antworten Zitat
Stecky2000

Registriert seit: 7. Mai 2008
Ort: Trebur
66 Beiträge
 
Delphi 2010 Professional
 
#35

Re: Das große WIE, Chart aktuallisieren, Daten in textfiles

  Alt 11. Jul 2008, 17:36
So, hat lange gedauert, aber nuu....

Hab schon wieder Probleme, wie schon geahnt.

Also....

Ich Hab zur Überprüfung und Visualisierung ein StringGrid genommen.
Mit einer Schleife lese ich x Textdateien ein in denen für 7 Tage (7 Spalten), in ca. 288 Zeilen Abdeckungswerte und in weiteren 288 Zeilen Bedarfswerte stehen, nacheinander ein und addiere die Werte nach Tag, 5-Minuten-Interval und Bedarf oder Abdeckung.

Danach hab ich also meine Ergebnisse von x Dienstplänen in eine StringGrid

Dieses ganze Einlesen der Textdateien und die Berechnung mit reinschreiben ins StringGrid dauert (visible := False) unter einer Sekunde. Das ist Toll.

Aber, wenn ich die Werte dann Zeile für Zeile, Spalte für Spalte in die Datenbank schreibe, das dauert dann ca. 10 Sekunden und das ist mir definitiv zu lang.

Ich mach das so:

Delphi-Quellcode:
     
     IBTable1.First;
     For i := 25 to 288 do
     begin
          IBTable1.Edit;
          IBTable1['AGRPMo']:= StrToFloat(StringGrid2.Cells[1, i]);
          IBTable1['AGRPDi']:= StrToFloat(StringGrid2.Cells[2, i]);
          IBTable1['AGRPMi']:= StrToFloat(StringGrid2.Cells[3, i]);
          IBTable1['AGRPDo']:= StrToFloat(StringGrid2.Cells[4, i]);
          IBTable1['AGRPFr']:= StrToFloat(StringGrid2.Cells[5, i]);
          IBTable1['AGRPSa']:= StrToFloat(StringGrid2.Cells[6, i]);
          IBTable1['AGRPSo']:= StrToFloat(StringGrid2.Cells[7, i]);
          IBTable1['ZGRPMo']:= StrToFloat(StringGrid2.Cells[8, i]);
          IBTable1['ZGRPDi']:= StrToFloat(StringGrid2.Cells[9, i]);
          IBTable1['ZGRPMi']:= StrToFloat(StringGrid2.Cells[10, i]);
          IBTable1['ZGRPDo']:= StrToFloat(StringGrid2.Cells[11, i]);
          IBTable1['ZGRPFr']:= StrToFloat(StringGrid2.Cells[12, i]);
          IBTable1['ZGRPSa']:= StrToFloat(StringGrid2.Cells[13, i]);
          IBTable1['ZGRPSo']:= StrToFloat(StringGrid2.Cells[14, i]);
          IBTable1.Post;
          IBTable1.Next;
     end;
Wobei ich noch eine zweite Schleife For i := 1 to 25 verwende, weil ich statt von 00:00 bis 23:55, von 02:00 bis 02:00 des Folgetages verwende.

Gibts eine schnellere Methode die Daten in die Datenbank zu bekommen?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#36

Re: Das große WIE, Chart aktuallisieren, Daten in textfiles

  Alt 11. Jul 2008, 17:51
Zitat von Stecky2000:
... StringGrid dauert (visible := False) unter einer Sekunde. Das ist Toll.

Aber, wenn ich die Werte dann Zeile für Zeile, Spalte für Spalte in die Datenbank schreibe, das dauert dann ca. 10 Sekunden und das ist mir definitiv zu lang.

Gibts eine schnellere Methode die Daten in die Datenbank zu bekommen?
Du hast den Flaschenhals doch schon selber entdeckt. Es ist die visuelle Darstellung durch Windows. Wenn ein Grid permanent aktualisiert werden soll, dann ist mit Verlangsamungs-Faktor 10-100 zu rechnen, zumindest gegenüber der Darstellung im Hintergrund und dann .Show aufzurufen. 8)

P.S.: 200 Datensätze sind fast schon lächerlich. Das wäre in einer kompletten Sek. schon recht langsam.
  Mit Zitat antworten Zitat
Stecky2000

Registriert seit: 7. Mai 2008
Ort: Trebur
66 Beiträge
 
Delphi 2010 Professional
 
#37

Re: Das große WIE, Chart aktuallisieren, Daten in textfiles

  Alt 11. Jul 2008, 18:08
Ich glaube, ich habe mich missverständlich ausgedrückt.

Zur Zeit nutze ich das StringGrid zur Kontrolle und quasi als gefaketes Array.

Ich kann mittels eines Button die Sichtbarkeit des StringGrids aus und einschalten.

Die Berechnungen finden mit "visible := false" statt.

Wenn ich die Daten vom StringGrid in die Datenbank kopiere, ist das StringGrid ebenfalls "visible := false".

Sprich, die ständigen Aktualisierungen finden nicht statt.

Die Datenbank/Tabelle im Firebird hat noch keine Anzeigemöglichkeit.
Die Inhalte schaue ich mir mit IBExpress an.

Wo ist also der Flaschenhals mit der Sichtbarkeit?

M. E. ist es auch nicht die StrinGrig Komponente, den die beschreibe ich unter einer Sekunde bestimmt 10 - 20 mal (so viele Dienstpläne).

Der Schreibvorgang in die Tabelle der Datenbank ist langsam.

Ich hätte jetzt eigentlich erwartet, wie gesagt ich bin kein Programmiere und schiesse entsprechende Pudel, das mir einer sagt:"so wie Du das da reinschreibst ist es zu aufwendig, langsam etc..."

Da das noch nicht fiel, sondern auf die Sichtbarkeit der Komponenten, fange ich an zu glauben, dass
a) mein PC/Festplatte zu langsam ist
b) die Firebird zu langsam ist
c) es kommt doch noch was anderes.

Auf jeden Fall danke ich dir (Hansa) für die schnelle Antwort.
Ich bin echt suuuper neugierig wie ich das ganze noch beschleunigen kann.

Was würde es eigentlich bringen, wenn ich die StrinGrid durch ein Array ersetze?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#38

Re: Das große WIE, Chart aktuallisieren, Daten in textfiles

  Alt 11. Jul 2008, 18:18
Zitat von Stecky2000:
..Was würde es eigentlich bringen, wenn ich die StrinGrid durch ein Array ersetze?
Nichts bemerkbares. Du musst aber mehr zeigen, um der Ursache auf den Grund zu gehen. Wahrscheinlich ist das Stringgrid doch nicht auf unsichtbar gesetzt. Glaubs jedenfalls mal nicht.
  Mit Zitat antworten Zitat
Stecky2000

Registriert seit: 7. Mai 2008
Ort: Trebur
66 Beiträge
 
Delphi 2010 Professional
 
#39

Re: Das große WIE, Chart aktuallisieren, Daten in textfiles

  Alt 11. Jul 2008, 19:56
Wie soll ich Dir das denn beweisen, dass die visable - Option auf False gesetzt ist?

Ich will doch hier niemand veräppeln.

Ich habe ein Formular auf das ich rein testweise ein Button gesetzt habe, mit folgendem Inhalt:

Delphi-Quellcode:

procedure TMainForm.Button2Click(Sender: TObject);
var
i: Integer;

begin
     StringGrid2.Visible := False;

     IBDatabase1.Connected := True;
     IBTable1.TableName := 'B1KUR';
     IBTable1.Active := True;
     IBTable1.First;
     For i := 25 to 288 do
     begin
          IBTable1.Edit;
          IBTable1['AGRPMo']:= StrToFloat(StringGrid2.Cells[1, i]);
          IBTable1['AGRPDi']:= StrToFloat(StringGrid2.Cells[2, i]);
          IBTable1['AGRPMi']:= StrToFloat(StringGrid2.Cells[3, i]);
          IBTable1['AGRPDo']:= StrToFloat(StringGrid2.Cells[4, i]);
          IBTable1['AGRPFr']:= StrToFloat(StringGrid2.Cells[5, i]);
          IBTable1['AGRPSa']:= StrToFloat(StringGrid2.Cells[6, i]);
          IBTable1['AGRPSo']:= StrToFloat(StringGrid2.Cells[7, i]);
          IBTable1['ZGRPMo']:= StrToFloat(StringGrid2.Cells[8, i]);
          IBTable1['ZGRPDi']:= StrToFloat(StringGrid2.Cells[9, i]);
          IBTable1['ZGRPMi']:= StrToFloat(StringGrid2.Cells[10, i]);
          IBTable1['ZGRPDo']:= StrToFloat(StringGrid2.Cells[11, i]);
          IBTable1['ZGRPFr']:= StrToFloat(StringGrid2.Cells[12, i]);
          IBTable1['ZGRPSa']:= StrToFloat(StringGrid2.Cells[13, i]);
          IBTable1['ZGRPSo']:= StrToFloat(StringGrid2.Cells[14, i]);
          IBTable1.Post;
          IBTable1.Next;
     end;

     For i := 1 to 25 do
     begin
          IBTable1.Edit;
          IBTable1['AGRPMo']:= StrToFloat(StringGrid2.Cells[2, i]);
          IBTable1['AGRPDi']:= StrToFloat(StringGrid2.Cells[3, i]);
          IBTable1['AGRPMi']:= StrToFloat(StringGrid2.Cells[4, i]);
          IBTable1['AGRPDo']:= StrToFloat(StringGrid2.Cells[5, i]);
          IBTable1['AGRPFr']:= StrToFloat(StringGrid2.Cells[6, i]);
          IBTable1['AGRPSa']:= StrToFloat(StringGrid2.Cells[7, i]);
          IBTable1['AGRPSo']:= StrToFloat(StringGrid2.Cells[1, i]);

          IBTable1['ZGRPMo']:= StrToFloat(StringGrid2.Cells[9, i]);
          IBTable1['ZGRPDi']:= StrToFloat(StringGrid2.Cells[10, i]);
          IBTable1['ZGRPMi']:= StrToFloat(StringGrid2.Cells[11, i]);
          IBTable1['ZGRPDo']:= StrToFloat(StringGrid2.Cells[12, i]);
          IBTable1['ZGRPFr']:= StrToFloat(StringGrid2.Cells[13, i]);
          IBTable1['ZGRPSa']:= StrToFloat(StringGrid2.Cells[14, i]);
          IBTable1['ZGRPSo']:= StrToFloat(StringGrid2.Cells[15, i]);
          IBTable1.Post;
          IBTable1.Next;
     end;


end;

Extra da mit Du es glaubst habe ich die Zeile: "StringGrid2.Visible := False;" eingebaut.
Es ändert nichts. Ich hatte die Visability bereits im Objektinspektor disabled.

Und genau dieser Buttonclick dauert ca. 10 Sekunden. Nichts mehr.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#40

Re: Das große WIE, Chart aktuallisieren, Daten in textfiles

  Alt 11. Jul 2008, 20:27
Edit/Post muss reichen. Das wird am Next liegen. 10 Sek. ist einfach zu viel.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 17:22 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