AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbankabfrage visualisieren (Firebird)
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbankabfrage visualisieren (Firebird)

Ein Thema von Haeger23 · begonnen am 4. Mär 2008 · letzter Beitrag vom 5. Mär 2008
Antwort Antwort
Seite 1 von 2  1 2      
Haeger23

Registriert seit: 11. Okt 2006
10 Beiträge
 
#1

Datenbankabfrage visualisieren (Firebird)

  Alt 4. Mär 2008, 20:48
Datenbank: Firebird • Version: 2.0 • Zugriff über: ZEOS
Hi,

also ich habe ein Problem meine Datenbankabfragen zu visualisieren, bisher ist es so, dass das Programm einfach für die Dauer der Abfrage nicht mehr ansprechbar ist. Ich möchte dem Benutzer aber am liebsten zeigen wie lange es noch dauern wird oder zumindest zeigen das überhaupt etwas passiert.

Ich habe schon was von Callback-Funktionen der Datenbank gelesen. Das bringt mich mit Firebird allerdings nicht weiter, ich glaube sowas gibt es unter Firebird gar nicht?!
Auch habe ich mir überlegt könnte man ein extra Fenster verwenden, welches in einem eigenen Thread läuft und in dem ein Progressbar stetig hoch und runter läuft. Ist doch aber irgendwie auch nix Ganzes oder?

Jetzt wollte ich gern mal fragen wie man denn sowas am besten löst?

Mit freundlichem Gruß
der Haeger
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Datenbankabfrage visualisieren (Firebird)

  Alt 4. Mär 2008, 21:22
FireBird unterstützt aber Events.
Markus Kinzler
  Mit Zitat antworten Zitat
Haeger23

Registriert seit: 11. Okt 2006
10 Beiträge
 
#3

Re: Datenbankabfrage visualisieren (Firebird)

  Alt 4. Mär 2008, 22:30
Kann ich die nutzen um mir während z.B. einer Select-Abfrage eine Rückmeldung an meine Delphi-Anwendung zugeben,
z.B. wieviele Datensätze bis dato gefunden wurden?

Mir wäre ein Alive-Signal schon genug eigentlich ... kannst du das evtl. ein wenig für mich ausführen? Ist Neuland.

Danke dir
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Datenbankabfrage visualisieren (Firebird)

  Alt 4. Mär 2008, 22:50
Nein, das was du möchtest geht leider nicht.

Du kannst nicht ermitteln wie weit die Datenbank mit der Verarbeitung ist und wie lange sie noch benötigt.

Is nich...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Datenbankabfrage visualisieren (Firebird)

  Alt 4. Mär 2008, 22:54
Innerhalb einer einfachen Abfrage wohl nicht, dort sollte so etwas auch nicht notwendig sein
http://support.codegear.com/tw/article/34722
http://www.sinter.com.tw/borland/int.../ib_events.pdf
Markus Kinzler
  Mit Zitat antworten Zitat
Haeger23

Registriert seit: 11. Okt 2006
10 Beiträge
 
#6

Re: Datenbankabfrage visualisieren (Firebird)

  Alt 4. Mär 2008, 23:31
Ok schon mal danke für eure Antworten. Ich kann also nicht zwischen ein Select-Statement kommen um den User zu informieren, dass etwas passiert. Die Frage ist aber nun, wie handled ihr das?

Lasst ihr den User im Ungewissen ob die Anwendung abgestürzt ist oder nicht?
Kann man so eine Abfrage vielleicht besser in einem Thread starten und nebenbei visuell eine Rückmeldung geben,
dass gerade die Datenbank abgefragt wird? Wenn ja gibt es da nen guten Tipp ein Tutorial?

Wie wird sowas im allgemeinen gehandhabt?

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Datenbankabfrage visualisieren (Firebird)

  Alt 4. Mär 2008, 23:52
Wie gross ist denn deine Datenbank... Vielleicht kann man ja auch noch was am SQL Statement tunen.

Wenns wirklich lang dauert, kann man die Query schon in einen getrennten Thread auslagern. Aber schneller wirds dadurch natürlich nicht, nur friert eben die Anwendung nicht ein. Du solltest dem Thread jedoch unbedingt eine eigene Connection spendieren.
  Mit Zitat antworten Zitat
Haeger23

Registriert seit: 11. Okt 2006
10 Beiträge
 
#8

Re: Datenbankabfrage visualisieren (Firebird)

  Alt 5. Mär 2008, 08:28
Also die Datenbank ist ca. 3 GB groß und der Großteil der Daten liegt auch in einer Entität.
Sind halt recht simple Daten (Die Datenbank ist normalisiert ).

Habe für diese spezielle Abfrage, da die recht häufig verwendet wird jetzt einen Index auf das Feld gelegt. Die Geschwindigkeit ist dadurch annehmbar.

Was ich aus dieser Diskussion jetzt mitnehme, ist:

- Wenn meine Select-Statements so lange Dauern, dass der Benutzer stutzig werden könnte, sollte ich diese optimieren. Denn in Firebird komme ich leider nach dem Abschicken des Statements und der Rückgabe der Daten nicht mehr dazwischen, um z.B. einen
Progressbar zu aktualisieren.
- Ist dies doch gefordert kann man auf Threads ausweichen, diese bringt allerdings nur dem User was, keine Performancesteigerung.


Habe ich was falsch verstanden oder vergessen? Bitte korrigiert mich .

Gruß
Haeger
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Datenbankabfrage visualisieren (Firebird)

  Alt 5. Mär 2008, 08:53
Zitat von Haeger23:
Habe ich was falsch verstanden oder vergessen? Bitte korrigiert mich .
Vollkommen richtig.
SELECT irgendwas FROM irgendwo - auf Ergebnis warten und dabei Sanduhr oder Progressbar oder "Livebar" anzeigen - Ergebnis bekommen - Ergebnis verarbeiten - Ergebnis anzeigen.

Aber wenn eine Abfrage soooo lange dauert, dann ist bestimmt was faul.
Entweder ist die DB nicht passend aufgebaut, es fehlen Indexe, oder die Abfrage ist falsch aufgebaut.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#10

Re: Datenbankabfrage visualisieren (Firebird)

  Alt 5. Mär 2008, 08:55
Soweit haste das richtig verstanden. Dass ein zusätzlicher Thread keinen Performancegewinn gibt liegt ja auf der Hand. Schließlich interessiert den Datenbankserver nicht wirklich, wieviele Threads du auf der lokalen Arbeitsstation aufmachst.

@Raven
Das würde ich pauschal nicht so sagen. Schließlich gibt es beispielsweise Data-Mining Abfragen, die extrem lang dauern (z.B. Statistiken, die für jede Warengruppe die Jahresumsätze im Vergleich zum Vorjahr gesplittet auf die Kundengruppen ausgeben). Da kann man auch mit Indizes irgendwann nichts mehr machen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:09 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