![]() |
MaxRecords wird in ADOQuery ignoriert
Auszug:
Delphi-Quellcode:
Das Problem ist: MaxRecords und RecordCount ist nicht gleich. Müsste doch eigentlich beides "200" sein, oder?? Der lädt immer 9089 Datensätze... 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; ... Was hab ich falsch gemacht? |
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] |
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
|
Re: MaxRecords wird in ADOQuery ignoriert
Zitat:
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. |
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 |
Re: MaxRecords wird in ADOQuery ignoriert
Zitat:
Zitat:
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. |
Re: MaxRecords wird in ADOQuery ignoriert
Liste der Anhänge anzeigen (Anzahl: 1)
Neue Version...
|
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
|
Re: MaxRecords wird in ADOQuery ignoriert
einen
SQL-Code:
würde ich immer einen ADO.RecordCount oder ADO.MaxRecords vorziehen :!:
SELECT Count(*) FROM Tabelle
|
Re: MaxRecords wird in ADOQuery ignoriert
Zitat:
Bei der ersten Verwendung einer ADOQuery wird das Property MaxRecords auf das unterliegende RecordSet übertragen. Spätere Änderungen von MaxRecords werden ignoriert. :cry: |
Re: MaxRecords wird in ADOQuery ignoriert
vielleicht ist es anders bei einen TADODataSet
oder die Kompo's von TADOBetterDataSet ? |
Re: MaxRecords wird in ADOQuery ignoriert
Zitat:
|
Re: MaxRecords wird in ADOQuery ignoriert
Zitat:
siehe Unit ADODB.pas Line 3445 ff:
Delphi-Quellcode:
procedure InitializeRecordset;
begin FRecordsetObject := CreateADOObject(CLASS_Recordset) as _Recordset; Recordset.CursorLocation := CursorLocationValues[FCursorLocation]; Recordset.CacheSize := FCacheSize; // <------- Recordset.MaxRecords := FMaxRecords; // <------- if FIndexName <> '' then begin Recordset.Index := FIndexName; RefreshIndexFields; end; EnableEvents; end; var VarRecsAffected: OleVariant; begin if not Assigned(Recordset) then begin InitializeConnection; // InitializeRecordset wird nur aufgerufen, wenn noch kein Recordset erzeugt wurde. // blöderweise werden dabei auch CacheSize & MaxRecords zugewiesen // InitializeRecordset; Recordset.Open(Source, ActiveConnection, CursorTypeValues[FCursorType], LockTypeValues[FLockType], CommandTypeValues[CommandType] + ExecuteOptionsToOrd(ExecuteOptions)); Zitat:
Andererseits könntest du auch mal versuchen:
Delphi-Quellcode:
ADOQuery1.RecordSet.MaxRecords := 100;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:27 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-2025 by Thomas Breitkreuz