Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MaxRecords wird in ADOQuery ignoriert (https://www.delphipraxis.net/25884-maxrecords-wird-adoquery-ignoriert.html)

Nalincah 14. Jul 2004 10:27


MaxRecords wird in ADOQuery ignoriert
 
Auszug:
Delphi-Quellcode:
 
...
ExportQuery.DisableControls;
ExportQuery.MaxRecords := 200;
ExportQuery.Close;
ExportQuery.SQL.Text := Query.SQL.Text;
ExportQuery.Open;
ShowMessage(IntToStr(ExportQuery.MaxRecords)+', '+IntToStr(ExportQuery.RecordCount));
FrmSQLVorschau.MemoVorschau.Clear;
ExportQuery.First;
...
Das Problem ist: MaxRecords und RecordCount ist nicht gleich. Müsste doch eigentlich beides "200" sein, oder?? Der lädt immer 9089 Datensätze

Was hab ich falsch gemacht?

Nalincah 14. Jul 2004 11:37

Re: MaxRecords wird in ADOQuery ignoriert
 
*push*

[edit=Sharky] :warn: Nach 70 Minuten zu pushen ist ja wohl der Hammer! Bitte halte dich an die Regeln. Mfg, Sharky[/edit]

[edit]SORRY[/edit]

Bernhard Geyer 14. Jul 2004 12:31

Re: MaxRecords wird in ADOQuery ignoriert
 
Ich vermute mal einen Implementierungsfehler der ADOExpress-Komponenten. Falls Du MS-SQL-Server verwendest, so schau mal mit dem SQl-Profiler auf die erzeugten Anweisungen
Einfacher ist es deine Anweisung mit TOP xyz zu versehen.
Code:
SELECT TOP 200 FROM xyz

Robert_G 14. Jul 2004 12:45

Re: MaxRecords wird in ADOQuery ignoriert
 
Zitat:

Zitat von Bernhard Geyer
Einfacher ist es deine Anweisung mit TOP xyz zu versehen.
Code:
SELECT TOP 200 FROM xyz

Das ist auch für den DB Server einfacher ;)
Wenn man ihm einen StopKey verpasst sieht der Query Plan meist ganz anders aus.
Für < 100/200 Einträge wird er wohl nicht auf Durchsatz, sondern auf Antwortzeit optimieren. MaxRecords in ADO wird wahrscheinlich im Normalfall alle späteren DS ignorieren.

Nalincah 14. Jul 2004 13:15

Re: MaxRecords wird in ADOQuery ignoriert
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich benutzt aber SAP DB 7.4 und das kennt kein TOP

Mit der ADOTable klappt es auch nicht
Hab mal ein Beispielprog drangehängt

Die Connection müsste dabei angepasst werden

Bernhard Geyer 15. Jul 2004 07:15

Re: MaxRecords wird in ADOQuery ignoriert
 
Zitat:

Zitat von General2004
Ich benutzt aber SAP DB 7.4 und das kennt kein TOP

Evtl. gibt es einen entsprechenden ersatz. Schau mal die Doku durch.
Zitat:

Zitat von General2004
Mit der ADOTable klappt es auch nicht
Hab mal ein Beispielprog drangehängt
Die Connection müsste dabei angepasst werden

1, Das Beispielprogramm konnte ich nicht öffnen (hab nur ~dsk-Datei gesehen). Kannst Du es evtl als ZIP anlegen?
2, Ich habe es mit einem eigenen Testprogramm mit MS-SQL 2000 probiert und da funktioniert es problemlos.
Evtl. unterstützt der OLEDB-Profider von SAP DB das gewünschte nicht bzw. hat 'ne Macke.

Nalincah 15. Jul 2004 08:18

Re: MaxRecords wird in ADOQuery ignoriert
 
Liste der Anhänge anzeigen (Anzahl: 1)
Neue Version...

Bernhard Geyer 15. Jul 2004 08:47

Re: MaxRecords wird in ADOQuery ignoriert
 
Keine Problem. Liefert 200 al RecordCount (bei MS-SQL über ODBC). Also wirds am Treiber für die SAP-DB liegen

trifid 15. Jul 2004 08:51

Re: MaxRecords wird in ADOQuery ignoriert
 
einen
SQL-Code:
SELECT Count(*) FROM Tabelle
würde ich immer einen ADO.RecordCount oder ADO.MaxRecords vorziehen :!:

shmia 15. Jul 2004 09:49

Re: MaxRecords wird in ADOQuery ignoriert
 
Zitat:

Zitat von General2004
Das Problem ist: MaxRecords und RecordCount ist nicht gleich. Müsste doch eigentlich beides "200" sein, oder?? Der lädt immer 9089 Datensätze

Die ADO-Express Komponenten von Borland haben einen Bug:
Bei der ersten Verwendung einer ADOQuery wird das Property MaxRecords auf das unterliegende RecordSet
übertragen.
Spätere Änderungen von MaxRecords werden ignoriert. :cry:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:37 Uhr.
Seite 1 von 2  1 2      

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