AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken TUniQuery liefert falschen RecordCount

TUniQuery liefert falschen RecordCount

Ein Thema von Andidreas · begonnen am 4. Dez 2013 · letzter Beitrag vom 5. Dez 2013
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

TUniQuery liefert falschen RecordCount

  Alt 4. Dez 2013, 09:21
Datenbank: SQLite • Version: ... • Zugriff über: UniDac
Hallo,

über eine TUniQuery mache ich einen ganz normalen
Code:
Select * From
auf eine SQLite Tabelle.
Wenn ich den RecordCount Abfrage liefert er mir ein falsches Ergebnis, mal sagt er ich habe 325 Datensätze in der Tabelle, mal 25, mal 850.
Die Tatsächlichen 870 Datensätze gibt er mir aber nie als RecordCount an.

Woran kann das liegen?
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
8.274 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: TUniQuery liefert falschen RecordCount

  Alt 4. Dez 2013, 09:57
Wenn nicht alle Datensätze sofort abgerufen werden, "weiß" die Query noch gar nicht wie viele Datensätze es sind. Um das zu erzwingen kannst du (wenn es bei der Klasse dafür keine Einstellung gibt), ein Query.Last aufrufen und dann die Anzahl auslesen. Allerdings kann das eben ggf. auch deutlich länger dauern, wenn die Tabelle groß ist.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Bentissimo

Registriert seit: 25. Apr 2006
Ort: Zeitlarn
76 Beiträge
 
Delphi XE2 Professional
 
#3

AW: TUniQuery liefert falschen RecordCount

  Alt 4. Dez 2013, 10:02
Such mal in der UniDAC Hilfe nach "FetchRows".
Stephan Schmahl
  Mit Zitat antworten Zitat
jaevencooler

Registriert seit: 8. Sep 2005
Ort: Friedrichshafen
41 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: TUniQuery liefert falschen RecordCount

  Alt 4. Dez 2013, 10:10
Moin, Moin,

Du kannst Dir auch mal die FetchOptions ansehen, da kannst Du einstellen wie die Daten von Deiner DB geholt werden sollen :

http://www.da-soft.com/anydac/docu/f...mfile=FAQ.html


Beste Grüße
Michael
Michael
Wissen ist Macht, nichts wissen macht auch nichts.
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: TUniQuery liefert falschen RecordCount

  Alt 4. Dez 2013, 10:48
Das mit den FetchRows habe ich auch gesehen...
Hier ist bei mir der Standard Wert von 25 eingetragen...

Das passt dann doch nicht zu den RecordCounts die mir die TUniQuery zurückliefert... oder doch?
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.000 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: TUniQuery liefert falschen RecordCount

  Alt 4. Dez 2013, 11:04
Das passt dann doch nicht zu den RecordCounts die mir die TUniQuery zurückliefert... oder doch?
Doch. Deine Werte sind vielfache von 25 und der liefert dir die Anzahl der schon geholten Einträge.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: TUniQuery liefert falschen RecordCount

  Alt 4. Dez 2013, 14:40
... ein Query.Last aufrufen und dann die Anzahl auslesen.
Daneben bieten die Query-Komponenten von DevArt die Möglichkeit, in den Options das Property QueryRecCount auf True zu setzen. Damit wird bei jedem Select die Anzahl der Datensätze ermittelt. Kann natürlich ebenso wie ein Query.Last etliche Zeit in Anspruch nehmen.

Eine dritte Möglichkeit bestünde darin, in einer gesonderten Tabelle den RecordCount aller anderen Tabellen zu verwalten, eventuell mit einer StoredProcedure auf dem Laufenden halten ...
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

AW: TUniQuery liefert falschen RecordCount

  Alt 4. Dez 2013, 15:01
Wenn ich den RecordCount einer Tabelle zwingend korrekt benötige mache ich einfach ein:
Code:
select count(*) as Anzahl from Tabelle
Das in einer extra Tabelle zu verwalten dürfte schnell recht aufwändig werden, da jedes Insert oder Delete dann diesen Verwaltungsschritt auslösen müsste und dann letztlich auch nur das Ergebnis des obigen SQL je Tabelle in der Verwaltungstabelle speichern müsste.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#9

AW: TUniQuery liefert falschen RecordCount

  Alt 4. Dez 2013, 15:36
Wenn ich den RecordCount einer Tabelle zwingend korrekt benötige mache ich einfach ein:
Code:
select count(*) as Anzahl from Tabelle
Und das wäre dann aus welchem Grund schneller als ein Query.Last?

Das in einer extra Tabelle zu verwalten dürfte schnell recht aufwändig werden, da jedes Insert oder Delete dann diesen Verwaltungsschritt auslösen müsste und dann letztlich auch nur das Ergebnis des obigen SQL je Tabelle in der Verwaltungstabelle speichern müsste.
Bei einer Tabelle mit zahlreichen Spalten (große VarChars und etliche Blobs) und Millionen von Datensätzen kann das aber schon Geschwindigkeitsvorteile bringen, wenn es um das Ermitteln des RecordCount geht, denn es würde das Durchzählen ersparen. Was spräche denn dagegen, mittels entsprechender StoredProcedures, die von den Triggern AfterInsert und AfterDelete ausgelöst werden, diesen einen Eintrag vorzunehmen? Man könnte auf diese Weise sogar den RecordCount aller Tabellen auf dem aktuellen Stand halten, wenn es notwendig wäre. Ich bin mir sicher, daß bei sehr großen Datenbanken (z.B. denen der NSA oder auch denen der EU-Vorratsdatenspeicherung) solche Mechanismen angewendet werden.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.367 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: TUniQuery liefert falschen RecordCount

  Alt 4. Dez 2013, 15:41
Das kann ich mir nicht vorstellen. So etwas würde ja nur in solchen Datenbanken ansatzweise Sinn ergeben, die sehr oft abgefragt, aber eher selten aktualisiert werden. Alle anderen würden hingegen vermutlich merklich ausgebremst werden, da für jeden einzelnen zu löschenden oder einzufügenden Datensatz der Trigger feuern würde.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 07:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf