AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Setze den Cursor dorthin wo...
Thema durchsuchen
Ansicht
Themen-Optionen

Setze den Cursor dorthin wo...

Ein Thema von Der schöne Günther · begonnen am 27. Nov 2014 · letzter Beitrag vom 28. Nov 2014
Antwort Antwort
Benutzerbild von humbuck
humbuck

Registriert seit: 26. Nov 2014
Ort: BW
65 Beiträge
 
Delphi XE4 Professional
 
#1

AW: Setze den Cursor dorthin wo...

  Alt 27. Nov 2014, 21:10
Naja, wenn du wirklich nach dem 35. Mai suchst, wirste sicherlich verdammt lange und erfolglos suchen müssen.

Solltest du jedoch nach einem realen Datum suchen wollen UND Daten-sensitive Controls verwenden, kannst du dies ja mit der folgenden Funktion versuchen:

function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; virtual;

Locate setzt die Cursor-Pos auf den angegeb. Datensatz und von dort kannste dann munter vor- und zurückblättern

zum Bleifisch:

Delphi-Quellcode:
DBGrid1.DataSource.DataSet.DisableControls;
DBGrid1.DataSource.DataSet.Locate('Datum','25.05.2008', [loCaseInsensitive])
DBGrid1.DataSource.DataSet.EnableControls;
Die Suche dauert bei einer Million Datensätzen schlechthin vergleichsweise lange und belastet immer den SQL-Server... ist unvermeidlich...
Jörch
Wissen ist Macht!
Wenn man nix weiß, muss man halt nur wissen, wo man nachschlagen muss.
Ergo: Ich weiß nix - macht nix.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.191 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Setze den Cursor dorthin wo...

  Alt 27. Nov 2014, 21:25
Und die Angabe "ich lade immer ja nur Häpchenweise" bringt den DB-Admin zur Weißglut. Denn deine 1 Mio. Datensätze gehen zwar nicht (gleich) übers Netz, aber der DB-Server muss dafür sorgen das diese 1 Mio. Datensätze entsprechende dem Abfragezeitpunkt gültig bereitstehen (also Löschaktion oder Inserts nicht auf diese 1 Mio. Datensätze wirken).
Das sehe ich ein. Aber in diesem Fall ist das ok.



kannst du dies ja mit der folgenden Funktion versuchen:

function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; virtual;
Danke! Das war genau was ich wollte. In meinem konkreten Fall habe ich dadurch nichts gewonnen denn FireDAC ist nach wie vor genauso langsam, die ACE-Komponenten von Sybase schaffen das in Millisekunden, FireDAC braucht mehrere Sekunden. Da liegt wohl die Schuld bei FireDAC.
  Mit Zitat antworten Zitat
Benutzerbild von humbuck
humbuck

Registriert seit: 26. Nov 2014
Ort: BW
65 Beiträge
 
Delphi XE4 Professional
 
#3

AW: Setze den Cursor dorthin wo...

  Alt 27. Nov 2014, 22:39
wenn du zwingend einen zeitlichen Vorteil benötigst, solltest du sicherlich eine andere Verbindungsschicht einsetzen.

Aber noch mal zu deinem Query:
Zitat:
Beispielhafte Query: SELECT ZEITPUNKT, MESSWERT FROM myTable
Es besteht natürlich auch noch die Möglichkeit, die Datenmenge vom SQL-Server einzugrenzen. Das macht das Paket, das über ein Netzwerk versendet wird deutlich schneller:

Query: SELECT ZEITPUNKT, MESSWERT FROM myTable WHERE ZEITPUNKT BETWEEN '23.04.2014' AND '26.05.2014'
Wenn du die Filter-Funktion deiner Datenkomponente verwendest, musst du allerdings auf BEWTEEN verzichten. Alternativ kannste aber auch logische Vergleichsoperatoren verwenden:
ZEITPUNKT >= '23.04.2014' AND ZEITPUNKT < '27.05.2014'

Das ganze ist immer davon abhängig, wie viele Messungen pro Tag durchgeführt werden. Ggf. musst du dann auch kürzere Intervalle selektieren und die Uhrzeit mit ins Spiel bringen, falls möglich...
Jörch
Wissen ist Macht!
Wenn man nix weiß, muss man halt nur wissen, wo man nachschlagen muss.
Ergo: Ich weiß nix - macht nix.
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:56 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 by Thomas Breitkreuz