Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi BDE TQuery.Edit --> Select * From Table (https://www.delphipraxis.net/104423-bde-tquery-edit-select-%2A-table.html)

jethark 3. Dez 2007 19:30

Datenbank: SQL-Server • Version: 2000 • Zugriff über: BDE

BDE TQuery.Edit --> Select * From Table
 
Hallo,

ich hatte vor einiger Zeit festgestellt, dass eine TQuery beim
ausführen der Routine "Edit" in manchen Fällen ein "Select * From Table"
Statement ausführt. Gerade bei der Arbeit mit grossen Datenmengen kann das sehr störend sein.
Da die Problematik aber etwas länger zurückliegt, und ich nicht mehr so recht weiss, wie und
wann und ob das tatsächlich geschieht, richte ich meine Frage an euch.

Kennt jemand diese Problematik, lässt sich das umgehen, und ggf. woran könnte es liegen?

Vielen Dank im Vorraus

jethark

mkinzler 3. Dez 2007 19:40

Re: BDE TQuery.Edit --> Select * From Table
 
Die BDE stilllegen.

jethark 3. Dez 2007 19:42

Re: BDE TQuery.Edit --> Select * From Table
 
Das obliegt nicht meiner Macht

Bernhard Geyer 3. Dez 2007 21:57

Re: BDE TQuery.Edit --> Select * From Table
 
Zitat:

Zitat von jethark
Das obliegt nicht meiner Macht

Und wieso nicht? Bist du nur ein Lemmig der dem Vorrauslaufenden in den Abgrund folgt?

hoika 4. Dez 2007 18:17

Re: BDE TQuery.Edit --> Select * From Table
 
Hallo,

das Edit macht meines Erachtens keinen Sinn.
Ich benutze zum Edit immer eine Extra-Query.


Heiko

jethark 4. Dez 2007 19:05

Re: BDE TQuery.Open --> Select * From Table
 
@Bernhard Geyer

Also das muss ich an der Stelle schon mal loswerden. Lemminge gucksch du
stuerzen sich nicht in Abgründe, dass ist nur eine Legende. :warn:

Persönliche umgehe ich natürlich auch die BDE, aber geschäftlich
kann man nicht immer das machen, was man tun möchte, zum. wenn man
nicht sein eigener Chef ist. Oft geht es dabei um Wirtschaftlichkeit, freie
Ressourcen, usw. . Die Situation ist nun halt mal die BDE.

Wir (Arbeit, ich) haben heute festgestellt, dass das "Select * From Table" nicht
beim Edit abgesetzt wird, sondern beim ersten Open der Query. Vielleicht kennt das
ja jemand?

mkinzler 4. Dez 2007 19:10

Re: BDE TQuery.Edit --> Select * From Table
 
Schau dir mal den Code von TQuery an. Vielleicht wirst du dann fündig.

marabu 4. Dez 2007 19:15

Re: BDE TQuery.Edit --> Select * From Table
 
Hallo,

die Total-Selektion gehört eigentlich zum Open() der TTable-Komponente. Hast du eventuell irgendwo eine solche Komponente im Einsatz?

Andernfalls: Kannst du an der Stelle, an der das SELECT * abgesetzt wird, anhalten und überprüfen, dass nicht irgendwann genau dieses unerwünschte SQL-Statement (z.B. über den Object Inspector) zugewiesen wurde?

Grüße vom marabu

Bernhard Geyer 4. Dez 2007 21:39

Re: BDE TQuery.Open --> Select * From Table
 
Zitat:

Zitat von jethark
Lemmingestuerzen sich nicht in Abgründe, dass ist nur eine Legende. :warn:

Kenn nicht die Legende sondern nur das Computerspiel

Zitat:

Zitat von jethark
Persönliche umgehe ich natürlich auch die BDE, aber geschäftlich
kann man nicht immer das machen, was man tun möchte, zum. wenn man
nicht sein eigener Chef ist. Oft geht es dabei um Wirtschaftlichkeit, freie
Ressourcen, usw. . Die Situation ist nun halt mal die BDE.

Sollte ein Programm länger als 2-3 Jahre "Restlebenszeit" haben ist es wirtschaftich nicht zu vertreten die BDE zu behalten! Jedenfalls nicht dann wenn währen der Zeit des öfteren das Produkt auf weiteren PC installiert wird.

Zitat:

Zitat von jethark
Wir (Arbeit, ich) haben heute festgestellt, dass das "Select * From Table" nicht
beim Edit abgesetzt wird, sondern beim ersten Open der Query.

Was ist im SQL-Property der Query-Komponente für ein Text hinterlegt vermutlich genau dieser "select * from table".

hoika 5. Dez 2007 08:37

Re: BDE TQuery.Edit --> Select * From Table
 
Hallo,

bei der BDE gibt es den SQL-Monitor,
gehe mal stückweise vor,
dann siehst du die Stelle.


Heiko

Bernhard Geyer 5. Dez 2007 08:42

Re: BDE TQuery.Edit --> Select * From Table
 
Zitat:

Zitat von hoika
bei der BDE gibt es den SQL-Monitor,

Ist der nicht nur für die SQL-Links zu verwenden? Und beim MS SQL-Server sind ja die SQL-Links noch problematischer da hier nur eine Uraltschnittstelle des MS SQL-Servers verwendet wird.

jethark 5. Dez 2007 19:26

Re: BDE TQuery.Edit --> Select * From Table
 
@Bernhard Geyer
Zitat:

Sollte ein Programm länger als 2-3 Jahre "Restlebenszeit" haben ist es wirtschaftich nicht zu vertreten die BDE zu behalten! Jedenfalls nicht dann wenn währen der Zeit des öfteren das Produkt auf weiteren PC installiert wird.
Ich stimme Dir ja auch vollkommen zu das die BDE veraltet ist. Und es ist vermutlich auch in den
meisten Fällen sinnvoll auf neue Pendants umzusteigen. Aber es gibt eben auch andere Fälle,
ein Beispiel hast Du ja gerade geliefert. Ich hoffe wir können diese müssige Diskussion damit beenden.

@all
Danke für eure Antworten. Ich komme wohl nicht drumrum mir den Quelltext von der TQuery anzusehen.
Ich habe das übrigens dem SQL-Profiler entnommen. Es tritt auch in Testprojekten direkt beim Open auf.
Allerdings nur wenn die Query RequestLive True ist.

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  lQuery: TQuery;
begin
  lQuery := TQuery.Create(self);
  try
    lQuery.DatabaseName := 'TestDSN';
    lQuery.SQL.CommaText := 'SELECT * FROM TABLE_1 where spalte1 = 5';
    lQuery.RequestLive := True;
    lQuery.Open;
  finally
    lQuery.Free;
  end;
end;
Ergebnis im Profiler:

SELECT * FROM "Table_1"
SELECT * FROM "Table_1"
SELECT * FROM "Table_1"
SELECT * FROM "Table_1"

SELECT "spalte1" FROM "Table_1" WHERE ("spalte1") = (5)
SELECT "spalte1" FROM "Table_1" WHERE ("spalte1") = (5)
SELECT "spalte1" FROM "Table_1" WHERE ("spalte1") = (5)
SELECT "spalte1" FROM "Table_1" WHERE ("spalte1") = (5)

jethark 5. Dez 2007 20:18

Re: BDE TQuery.Edit --> Select * From Table
 
o.k. das passiert wohl alles innerhalb folgendem Routinenaufrufs

Delphi-Quellcode:
DbiQAlloc(DBHandle, qrylangSQL, FStmtHandle)
Die Routine ist leider in der BDE.pas und die habe ich leider nicht.

Bernhard Geyer 5. Dez 2007 21:07

Re: BDE TQuery.Edit --> Select * From Table
 
Gehst du nun über SQL-Links oder über ODBC? Kannst du auch mal den anderen Weg probieren?

Kann es sein das über die Abfrage ohne Filter + Felder die BDE einfach nur die Liste der Felder in der Tabelle bestimmen will? Hängen evtl. an der Query ein Grid mit persistenten Feldtypen?

mkinzler 5. Dez 2007 21:12

Re: BDE TQuery.Edit --> Select * From Table
 
Ich würde mich an deiner Stelle doch mal andere Komponenten ansehen
SDAC von CRLabs z.B. bringt einen Wizrad zur Migration von der BDE mit.

jethark 5. Dez 2007 21:28

Re: BDE TQuery.Edit --> Select * From Table
 
Über ODBC sowohl mit Native Client als auch SQL-Server Treiber.
Auf den SQL-Servern 2000 und 2005.
Gleiches kann man aber auch bei DB2 für iSeries und AS400 beobachten.
Wie im obigen Beispiel hängt an der Query nichts dran.
Ich vermute auch mal das hier Felddefinitionen abgefragt werden.

SDAC klingt sehr interessant unterstützt aber wohl nur SQL-Server.
Was habt ihr den für Erfahrungen bei der Migration auf ADO gemacht,
oder welche grossen Probleme könnten sich da auftun?

mkinzler 5. Dez 2007 21:31

Re: BDE TQuery.Edit --> Select * From Table
 
SDAC ist nur für MSSQL. Es gibt aber auch noch Kompos für andere DBMS:
http://crlab.com/products-vcl.html
Oder AnyDAC


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