![]() |
Datenbank: MSSQL • Version: 2000 • Zugriff über: ADO
TAdoDataSet und OnFetchProgress ASync
Hallo,
habe das problem das bei meiner Connection zu einem MS SQL 2000 Server das OnFetchProgress Ereigniss komische Daten liefert. Evtl. hat jemand ne Lösung für das Problem.
Delphi-Quellcode:
object DataSet: TADODataSet
AutoCalcFields = False Connection = DBConnection ExecuteOptions = [eoAsyncExecute, eoAsyncFetch, eoAsyncFetchNonBlocking] OnFetchProgress = DataSetFetchProgress Parameters = <> Left = 8 Top = 16 end
Delphi-Quellcode:
Progress und MaxProgress liefern aber irgend wie komische werte.
procedure TfMain.DataSetFetchProgress(DataSet: TCustomADODataSet; Progress,
MaxProgress: Integer; var EventStatus: TEventStatus); begin end; ProgressBar1.Max := MaxProgress; ProgressBar1.Position := Progress; Application.ProcessMessages; end; So das wenn ich die Bar Aktuallisiere ich einen sprung auf 99% habe und irgend wann 100%. Zitat:
Hat irgend jemand das Problem schonmal gelöst? |
Re: TAdoDataSet und OnFetchProgress ASync
Hmm hat hier keiner eine Idee oder das selbe Problem schonmal gehabt?
|
Re: TAdoDataSet und OnFetchProgress ASync
Es kommt sicher darauf an, ob der SQL Server eine Ahnung hat, wieviele Datensätze in der Datenmenge enthalten sind.
Bei SELECT * FROM Tabelle kann der Server diese Anzahl vorher ermitteln. Bei JOINs oder Abfragen mit Where-Bedingungen ist dies nicht möglich, denn der Server fängt an, Datensätze auszuliefern bevor die Abfrage komplett fertig ist. Das war jetzt alles Spekulation, aber erscheint mir richtig. |
Re: TAdoDataSet und OnFetchProgress ASync
Zitat:
Kann doch nicht sein das dies so nicht funktioniert wie es in der Hilfe steht. |
Re: TAdoDataSet und OnFetchProgress ASync
Zitat:
Sowohl bei der JET-Engine als auch beim SQL Server ist Progress um 15 kleiner als MaxProgress. Es scheint ein Problem von ADO oder dem darunterliegenden OLE-DB Provider (für SQL-Server) zu sein. Das Event wird in der Unit ADODb.pas unverfälscht weitergereicht. |
Re: TAdoDataSet und OnFetchProgress ASync
Zitat:
Microsoft? Borland? :) |
Re: TAdoDataSet und OnFetchProgress ASync
Zitat:
Du kannst halt keinen "richtigen" ProgressBar anzeigen, sondern nur die Anzahl der bisher gelesenen Records und das Event OnFetchProgress benützen um irgend einen Indikator zu bewegen. Der Benutzer sieht dann halt: "es geht was" aber nicht wie lange es noch dauern könnte. |
Re: TAdoDataSet und OnFetchProgress ASync
Ich kann es jetzt nich testen, aber versuch doch mal
SQL-Code:
eventuell bringt das was ...
SELECT TOP 100 PERCENT FROM table_a
Schöne Grüße, Jens :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 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