AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Zugriff auf Access DB sehr langsam

Zugriff auf Access DB sehr langsam

Ein Thema von der_karlheinz · begonnen am 13. Sep 2007 · letzter Beitrag vom 19. Sep 2007
Antwort Antwort
Seite 2 von 2     12
grenzgaenger
(Gast)

n/a Beiträge
 
#11

Re: Zugriff auf Access DB sehr langsam

  Alt 15. Sep 2007, 13:36
an deiner stelle würd ich auch mal die datenbank komprimieren... vielleicht hift dies...
  Mit Zitat antworten Zitat
der_karlheinz

Registriert seit: 13. Sep 2007
10 Beiträge
 
#12

Re: Zugriff auf Access DB sehr langsam

  Alt 15. Sep 2007, 16:05
Komprimiert hatte ich die DB schon, hat nur ein paar Sekunden gebracht, leider
das nicht den gewünschten erfolg gebracht.
Das Abrufen der Daten aus der DB funktioniert ja wunderbar,
nur schreiben dauert ewig.

Werde mich heut abend mal dran setzen, das Schreiben mit
dem ADOQuery fertig zu Programmieren.
  Mit Zitat antworten Zitat
der_karlheinz

Registriert seit: 13. Sep 2007
10 Beiträge
 
#13

Re: Zugriff auf Access DB sehr langsam

  Alt 17. Sep 2007, 12:02
Soo, der Schreibzugriff auf die Datenbank ist jetzt schon erheblich fixer,...

hab in der FAQ was gefunden, und ausprobiert

Delphi-Quellcode:
DataModule1.ADOQuery.SQL.Text := 'SELECT * FROM tabelle WHERE 0=1';
DataModule1.ADOQuery.Open;

DataModule1.ADOQuery.Append;
DataModule1.ADOQuery['Date'] := now;
DataModule1.ADOQuery['Time'] := now;
...
...
DataModule1.ADOQuery.Post;

DataModule1.ADOQuery.Close;
Jetzt hängts nur noch beim Programmstart (für ne Zeitlang > 50% Auslastung).
Ich habe ja noch eine DBGird und eine TeeChart Komponente, die auf die DB zugreifen, um das ganze zu Visualisieren.

Dafür habe ich noch ein TADOTable, das ich zusammen mit TADOConnect auf Activ bzw. Connected = TRUE gestellt habe.

Ich denke das das beim Programmstart dafür sorgt, das die CPU erstmal in die Knie geht.

Gibt es da vielleicht einen ähnlichen Lösungsweg für?

Die Tabelle und das Diagramm sollten alle Paar Minuten einen Refresh durchführen, das klappt auch wunderbar,
ohne das das Programm hängt. Nur beim Starten des Programms, dauerts.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: Zugriff auf Access DB sehr langsam

  Alt 18. Sep 2007, 13:09
Hallo,

<< Ich denke das das beim Programmstart dafür sorgt, das die CPU erstmal in die Knie geht. >>

Warum probierst du das nicht einfach aus ?.
BreakPoint auf deine 1. Anweisung und los geht's.

In meinen Programmen wird beim Start nur ein Connect gemacht.
Alles andere, wenn der Nutzer was will.

Isdt das DBGrid offen beim Start ?
Was steht drin ?
Alle Einträge? Wenn ja, warum ?


Heiko
Heiko
  Mit Zitat antworten Zitat
der_karlheinz

Registriert seit: 13. Sep 2007
10 Beiträge
 
#15

Re: Zugriff auf Access DB sehr langsam

  Alt 18. Sep 2007, 18:42
Hallo Heiko,

hab mich mal mit dem Debugger durch den Programmaufruf bewegt.

In der Projekt Unit hängts bei Application.CreateForm(DatenModul) (hoffe ich habs jetz richtig geschrieben,
habs Programm auf einem andern Rechner).

Hmm, ich habe eine seperate Form, in der ich das DBGird habe, und eine seperate Form,
wo ich das TeeChart drin habe,
das DBGird zeigt mir alle Datensätze an.
Es müssten nicht alle Einträge angezeigt werden, mir würden von den 50000 Datensätzen
z.B. die letzten 100 reichen, wenn ich die Möglichkeit habe mich dann noch über
Schaltflächen oder einen Filter weiter zu bewegen (in alten Datensätzen).

Im TeeChart bewege ich mich ja mit der Next und Previous Methode in den Datensätzen
(da wird wohl nicht die ganze DB erst gelesen???)

Ich denke ich habe das Problem verstanden,
mir fehlt nur der Lösungsansatz.

Gibt es eigentlich spezielle Bücher oder ebooks, die sich mit SQL im Bezug auf Borlands Delphi beschäftigen?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#16

Re: Zugriff auf Access DB sehr langsam

  Alt 18. Sep 2007, 18:51
Hallo,

dann setz mal nen Breakpoint in das Create des DataModuls.
Ist die Query (für das DBGrid) zur Designzeit schon offen?
Mache es mal zu und erst im Create des DataModusl auf.

Dein Problem wird wohl das "50000 Datensätze sein".

Das DBGrid lädt alle Datensätze, um sie in dem Grid anzuzeigen,
im DB-Entwicklung mit Delphi (Andreas Kosch)
stand aber zumindestens mal was mit Verwendung von Bookmarks.

Warum müssen 500000 angezeigt werden ?
Das macht überhaupt keinen Sinn.
Baue eine Suchfunktion ein,
die immer nur eine kleine Teilmenge anzeigt.


Heiko
Heiko
  Mit Zitat antworten Zitat
der_karlheinz

Registriert seit: 13. Sep 2007
10 Beiträge
 
#17

Re: Zugriff auf Access DB sehr langsam

  Alt 19. Sep 2007, 07:22
So, ich versuche jetzt die Datensätze im DBGird zu Filtern,

wenn ich folgendes Versuche (Die Variablen filter_von und filter_bis sind als TDateTime Global definiert)

Delphi-Quellcode:
procedure TTabelle.B_Filter_updateClick(Sender: TObject);
var
Datumsformat: TFormatSettings;
von: String;
bis: String;
begin
  Datumsformat.DateSeparator:='-';
  Datumsformat.ShortDateFormat:='yyyy-dd-mm';
  Datumsformat.TimeSeparator:=':';
  Datumsformat.ShortTimeFormat:='HH:mm:ss';

  von:= (E_von_jahr.Text + ('-') + E_von_monat.Text + ('-') + E_von_tag.Text);
  bis:= (E_bis_jahr.Text + ('-') + E_bis_monat.Text + ('-') + E_bis_tag.Text);
  filter_von:=(StrToDateDef(von, -10, Datumsformat) + StrToTimeDef('00:00:00', -10, Datumsformat));
  filter_bis:=(StrToDateDef(bis, -10, Datumsformat) + StrToTimeDef('23:59:00', -10, Datumsformat));

  Edit1.Text:=datetostr(filter_von);
  Edit2.Text:=datetostr(filter_bis);

  DataModule1.ADOQuery_DBGird.Close;
  DataModule1.ADOQuery_DBGird.SQL.Text := 'SELECT * FROM tabelle WHERE Date BETWEEN filter_von AND filter_bis';
  DataModule1.ADOQuery_DBGird.Open;


end;
bekomme ich beim Ausführen die Fehlermeldung "filter_von" hat keinen Standartwert.

Woran kann das liegen???
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#18

Re: Zugriff auf Access DB sehr langsam

  Alt 19. Sep 2007, 07:53
Hallo,

DataModule1.ADOQuery_DBGird.SQL.Text := 'SELECT * FROM tabelle WHERE Date BETWEEN filter_von AND filter_bis';

Du schreibst das direkt als String.

Delphi-Quellcode:
DataModule1.ADOQuery_DBGird.SQL.Text :=
  'SELECT * FROM tabelle WHERE Date BETWEEN :filter_von AND :filter_bis';
DataModule1.ADOQuery_DBGird.ParamByName('filter_von').AsDateTime:= tdtFilter_von;
DataModule1.ADOQuery_DBGird.ParamByName('filter_bis').AsDateTime:= tdtFilter_bis;
Ich habe auch gleich mal nen tdt davorgesetzt,
dann ist es leichter zu verstehen, was eine Variable für einen Typ hat.


Heiko
Heiko
  Mit Zitat antworten Zitat
der_karlheinz

Registriert seit: 13. Sep 2007
10 Beiträge
 
#19

Re: Zugriff auf Access DB sehr langsam

  Alt 19. Sep 2007, 08:42
Das Problem ist gelöst,...

Delphi-Quellcode:
  DataModule1.ADOQuery_Ofen_DBGird.Close;
  DataModule1.ADOQuery_Ofen_DBGird.SQL.Text := 'SELECT * FROM Ofen20 WHERE Date BETWEEN :filter_von AND :filter_bis';
  DataModule1.ADOQuery_Ofen_DBGird.Parameters.ParamByName('filter_von').Value:= tdtFilter_von ;
  DataModule1.ADOQuery_Ofen_DBGird.Parameters.ParamByName('filter_bis').Value:= tdtFilter_bis;
  DataModule1.ADOQuery_Ofen_DBGird.Open;
mal sehen, ob das Programm jetzt schneller startet.

Wie sieht das mit dem DBChart aus?
Wird da auch erst die ganze Tabelle eingelesen?


Gruß
Stephan
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#20

Re: Zugriff auf Access DB sehr langsam

  Alt 19. Sep 2007, 09:39
Hallo,

kommt auf das DataSource -> DataSet an des DBChart an.


Heiko
Heiko
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:13 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