AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Zugriff auf MYSQL per DBExpress

Ein Thema von af99 · begonnen am 30. Nov 2015 · letzter Beitrag vom 2. Dez 2015
Antwort Antwort
Seite 2 von 2     12
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#11

AW: Zugriff auf MYSQL per DBExpress

  Alt 30. Nov 2015, 17:23
2. gegoogeltes Statement? ich habe beide selber geschrieben.
Was in den Variablen steht spielt doch keine Rolle. beim Recordcount gebe ich doch keine Datenbank an!
Wenn ich beide Statements laufen lasse und im Memo mir die Ergebnisse ausgeben lasse bekomme ich z.B.: 10 Datensätze zurück. Wenn ich dann ein Query1.recordcount mache gibt es mir aber 40 zurück.
"gelogged" denglisch für ~mitprotokolliert
Also es geht um Dein produziertes Statement. Wenn Du es extra loggst, damit es exakt nachvollziehbar ist, warum postest Du es nicht hier, statt wieder den Code mit Variablen, die niemand kennt.
Und wieso sollen die Variablen keine Rolle spielen? Wenn das so wäre, könntest Du sie weglassen.
Es geht darum sicherzustellen, dass tatsächlich beide Statements 1000% identisch an die DB geschickt werden. Das ist erfahrungsgemäß keine Selbstverständlichkeit.

Ansonsten, wenn Dein Code abgeklopft und korrekt ist, kann man sich mal die Treiber vornehmen bzw. DB Express. Weiß nicht wie da mittlerweile der Stand ist, aber die Zählung bei Queries kann (konnte) wohl durchaus ungenau sein, weil das Verfahren zu Bestimmung über ein (falsch) generiertes Count Statement läuft (lief).
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#12

AW: Zugriff auf MYSQL per DBExpress

  Alt 30. Nov 2015, 17:40
Es geht darum sicherzustellen, dass tatsächlich beide Statements 1000% identisch an die DB geschickt werden. Das ist erfahrungsgemäß keine Selbstverständlichkeit.
abgesehen davon, daß 100% Übereinstimmung ausreichend ist, kann ich diese Äußerung nur unterschreiben. Nach meiner Erfahrung ist der "recordCount" der von der Abfrage, bzw. der Komponente zurückgegeben wird, nur dann zuverlässig wenn es sich um modifizierte Datensätze handelt. (update)
Wenn Du sicher wissen willst, was zurückgegeben wird, ist selbst zählen die zuverlässigste Methode.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
af99

Registriert seit: 22. Apr 2004
84 Beiträge
 
Delphi XE5 Ultimate
 
#13

AW: Zugriff auf MYSQL per DBExpress

  Alt 1. Dez 2015, 15:53
naja wie bereits geschrieben läuft meine Abfrage ja nun. Das Recordcount der DBX ist definitiv falsch (das hat meines Erachtens ja auch nichts mit dem Statement zu tun). Ich mache nun ein Count über ein SQL Statement. Ist halt doof da das wesentlich langsamer ist wie ein Recordcount.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#14

AW: Zugriff auf MYSQL per DBExpress

  Alt 1. Dez 2015, 16:07
Ich mache nun ein Count über ein SQL Statement. Ist halt doof da das wesentlich langsamer ist wie ein Recordcount.
Vielleicht macht ja DBX nichts anderes als Du nun zu Fuß, nur DBX versucht es schneller bzw. schlauer zu machen und fliegt dabei auf die Nase. Das bedeutet in Konsequenz, dass das Statement 2mal ausgeführt wird.

Ich weiß allerdings nicht, ob das wirklich die Ursache ist. Vielleicht gibt es hier jemand, der die aktuellen Komponenten kennt.
Gruß, Jo
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#15

AW: Zugriff auf MYSQL per DBExpress

  Alt 1. Dez 2015, 17:05
Meiner Kenntnis und Erfahrung nach werden bei der Abfrage von RecordCount immer nur die in der Datenmenge des Queries bzw. DataSets befindlichen Datensätze berücksichtigt. Wieviele Datensätze bei einem Select-Befehl aus der Datenbank gelesen werden, hängt von verschiedenen Dataset-Einstellungen ab. Erst ein Dataset.Last sorgt dafür, daß RecordCount alle zum Zeitpunkt der Abfrage vorhandenen Datensätze berücksichtigt. Ein SQL-seitiges Count ist davon unabhängig und zählt die tatsächlich in er DB vorhandenen Datensätze.
  Mit Zitat antworten Zitat
af99

Registriert seit: 22. Apr 2004
84 Beiträge
 
Delphi XE5 Ultimate
 
#16

AW: Zugriff auf MYSQL per DBExpress

  Alt 2. Dez 2015, 09:32
Nachdem ich dann viel Zeit mit der Ursachenforschung verbracht habe bin ich mir recht sicher das das Recordcount bei DBX und mysql nicht funktioniert. Dazu habe ich auch noch folgendes gefunden
http://forums.devart.com/viewtopic.php?t=3171
Ich würde an diese Stelle davon abraten es zu benutzen. Stattdessen muss man bei dbx und mysql wohl auf ein SQL Count() zurückgreifen.
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Zugriff auf MYSQL per DBExpress

  Alt 2. Dez 2015, 09:57
Ein 10 Jahre alter Bug und den gibt's immer noch? Das ist aber bitter.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  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 14:31 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