Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TADOTable.Active = true mit Fortschritt (https://www.delphipraxis.net/12979-tadotable-active-%3D-true-mit-fortschritt.html)

Nalincah 8. Dez 2003 14:11


TADOTable.Active = true mit Fortschritt
 
Ist es irgendwie möglich, wenn man mit einer TADOTable ne Tabelle öffnen irgendwo den Fortschritt auslesen kann?

sakura 8. Dez 2003 14:15

Re: TADOTable.Active = true mit Fortschritt
 
Nope ;-)

...:cat:...

Nalincah 8. Dez 2003 14:17

Re: TADOTable.Active = true mit Fortschritt
 
S******e
Und was mach ich wenn die Tabelle > 2 GB ist?

sakura 8. Dez 2003 15:17

Re: TADOTable.Active = true mit Fortschritt
 
Diese indizieren bzw. schauen, wo man die optimieren kann. Was wir für einen Kunden mal gemacht haben, ist einen Hashtree zu erstellen und die Suche auf bestimmte Objekte zu reduzieren. Damit kann man eine enorme Geschwindigkeitsverbesserung erzielen. Nachteil ist, daß man nicht alles in der Volltextsuche machen kann ;-)

...:cat:...

woki 8. Dez 2003 15:17

Re: TADOTable.Active = true mit Fortschritt
 
Eine Query, z.B. tAdoquery (besser TBetteradodataset) nehmen und über einschränkende Bedingungen nur die Daten abholen, die man wirklich braucht, 2GB für eine Übertragung zum Client sind doch der helle Wahnsinn.

Grüsse
Woki

Sharky 8. Dez 2003 20:35

Re: TADOTable.Active = true mit Fortschritt
 
Zitat:

Zitat von woki
...., 2GB für eine Übertragung zum Client sind doch der helle Wahnsinn....

Hai General,

ich kann mich da woki nur anschließen. Mir ist keine Situation bekannt wo ich vom DB-Server 2 GB zum Client übertragen musste.
Ich denke Du hast, wenn das bei dir so ist, einen logischen Fehler in deiner:

a) Abfrage
b) Planung für den Client.

Schreib doch mal was Du machen musst. Dann kann man das etwas besser einschätzen.

r_kerber 9. Dez 2003 04:59

Re: TADOTable.Active = true mit Fortschritt
 
Zitat:

Zitat von General2003
Und was mach ich wenn die Tabelle > 2 GB ist?

Die Antwortmenge über ein serverseitige Abfrage (SQL-Statement) einschränken! 2GB über's Netz zu laden dauert 'ne Weile und drückt die Netzperfomance nach unten. Was sagen denn Deine Sysops dazu?

Nalincah 9. Dez 2003 07:29

Re: TADOTable.Active = true mit Fortschritt
 
Boah...Ihr scheint euch ja hier nen miesen auf die 2GB zu schieben...Das war eingentlich nur ein Beispiel. Also es geht um ein Programm zum Datenbank-Betrachten. Wenn da ein User ne Table öffnen will die halt sehr groß ist, wär ne Anzeige ganz nett wo steht wie weit das ganze ist

r_kerber 9. Dez 2003 07:39

Re: TADOTable.Active = true mit Fortschritt
 
Und wozu muß der Anwender die gesamte Tabelle sehen? Wenn es sich da um mehrere 100000 Datensätze handelt, kann er das sowieso nicht überblicken! Laß ihn doch auswählen, was er sich anschauen möchte. Das Übetragen größer Datenmengen, egal ob 2 GByte oder 800 MByte sind sowhl für den Datenbankserver als auch für das Netzwerk Performance-Bremsen. So ein Bottleneck sollte man möglichst vermeiden. Vielleicht wollen ja auch noch andere Anwender mit dem Netzwerk oder der DB arbeiten.

Nalincah 9. Dez 2003 07:42

Re: TADOTable.Active = true mit Fortschritt
 
Kann man denn irgendwie vor dem öffnen der Tabelle rausfinden wie groß diese ist? Also wie viele Records?

r_kerber 9. Dez 2003 07:46

Re: TADOTable.Active = true mit Fortschritt
 
SQL-Code:
select count(*) from tabelle;
Aber auch das kann bei großen Tabellen etwas länger dauern.

Nalincah 9. Dez 2003 07:57

Re: TADOTable.Active = true mit Fortschritt
 
Ich hab vor das so zu machen:

Delphi-Quellcode:
TempQuery := TADOQuery.Create(nil);
try
  TempQuery.Connection := Con;
  TempQuery.SQL.Text := 'Select Count(*) from ' + ListBoxTable.Items[ListBoxTable.ItemIndex];
  TempQuery.ExecSQL;
finally
  TempQuery.Free;
end;
Leider weiß ich nicht wie ich jetzt das Ergebnis auslesen kann :wall:

r_kerber 9. Dez 2003 08:05

Re: TADOTable.Active = true mit Fortschritt
 
Ungetestet:
Delphi-Quellcode:
TempQuery := TADOQuery.Create(nil);
try
  TempQuery.Connection := Con;
  TempQuery.SQL.Text := 'Select Count(*) as anzahl from ' + ListBoxTable.Items[ListBoxTable.ItemIndex];
  iAnzahl := TempQuery.FieldByName('anzahl').AsInteger;
  TempQuery.ExecSQL;
finally
  TempQuery.Free;

Sharky 11. Dez 2003 09:27

Re: TADOTable.Active = true mit Fortschritt
 
Anstelle von .ExecSQL sollte .Open verwendet werden.
ExecSQL soll nur bei SQL-Befehlen die keine Ergebnisse zurück liefer benutzt werden (Update,Delete,usw).

r_kerber 11. Dez 2003 10:06

Re: TADOTable.Active = true mit Fortschritt
 
Zitat:

Zitat von Sharky
Anstelle von .ExecSQL sollte .Open verwendet werden.
ExecSQL soll nur bei SQL-Befehlen die keine Ergebnisse zurück liefer benutzt werden (Update,Delete,usw).

Stimmt. Mein Fehler. :oops:

Nalincah 11. Dez 2003 10:07

Re: TADOTable.Active = true mit Fortschritt
 
Danke @ all
Hab das jetzt so gemacht das der User gefragt wird, sobald es mehr als 10000 Datensätze sind


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:28 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