![]() |
Re: Das große WIE, Chart aktuallisieren, Daten in textfiles
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. :-D |
Re: Das große WIE, Chart aktuallisieren, Daten in textfiles
Das funktioniert, da im embedded-(Server-)Client ein Server steckt
|
Re: Das große WIE, Chart aktuallisieren, Daten in textfiles
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? |
Re: Das große WIE, Chart aktuallisieren, Daten in textfiles
Daten direkt in Datenbank scheiben, das Grid wird dann entsprechend aktualisiert.
|
Re: Das große WIE, Chart aktuallisieren, Daten in textfiles
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:
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.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; Gibts eine schnellere Methode die Daten in die Datenbank zu bekommen? |
Re: Das große WIE, Chart aktuallisieren, Daten in textfiles
Zitat:
P.S.: 200 Datensätze sind fast schon lächerlich. Das wäre in einer kompletten Sek. schon recht langsam. |
Re: Das große WIE, Chart aktuallisieren, Daten in textfiles
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? |
Re: Das große WIE, Chart aktuallisieren, Daten in textfiles
Zitat:
|
Re: Das große WIE, Chart aktuallisieren, Daten in textfiles
:-D 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. |
Re: Das große WIE, Chart aktuallisieren, Daten in textfiles
Edit/Post muss reichen. Das wird am Next liegen. 10 Sek. ist einfach zu viel.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz