![]() |
AW: TField.Size zur Laufzeit anpassen ohne doppeltes Öffnen der Query
@Furtbichler: Das ist mal ein radikaler Ansatz, den werde ich definitiv am Montag testen und mich dann hier wieder melden. Es wird aber wohl gegen Feierabend werden, da der Vormittag bereits verplant ist und daraus meist neue dringende Aufgaben entstehen... Aber der Ansatz ist es auf alle Fälle Wert die Sache noch einmal anzufassen!
Danke und schönes Wochenende! |
AW: TField.Size zur Laufzeit anpassen ohne doppeltes Öffnen der Query
Gestern hatte ich keine Zeit mehr diese Sache anzugehen. Soeben habe ich das Vorgehen etwas genauer unter die Lupe genommen und bin auf folgende Schwierigkeiten gestoßen:
Trotzdem danke für die Idee. |
AW: TField.Size zur Laufzeit anpassen ohne doppeltes Öffnen der Query
Hi,
IBObjects erstellt die Felder ja schon beim Prepare, nicht erst nach dem Öffnen. So könnte man nach dem Prepare den Check durchführen. U.U. den Select in eine Temporäre Query, Preparen und mit der richtigen Query vergleichen. Frank |
AW: TField.Size zur Laufzeit anpassen ohne doppeltes Öffnen der Query
Wie ich im ersten Beitrag schrieb, sind die FieldDefs, die die wahren Stringlängen aus der DB enthalten, erst nach dem Öffnen der Query verfügbar. Ich will die Query auch nicht zweimal öffnen - auch keine temporäre Query. Da ich das Ganze nicht für jede Query extra programmiere, sondern zentral für alle Queries, kenne ich auch das ausgeführte SQL nicht. Sollte dieses mal kein reines SELECT enthalten, wäre eine mehrfache Ausführung u.U. schlichtweg falsch.
|
AW: TField.Size zur Laufzeit anpassen ohne doppeltes Öffnen der Query
Zitat:
Setz doch einfach mal das Ereignis AfterPrepare. Und dann eine Schleife durch die Felder:
Delphi-Quellcode:
Frank
for ...
if qry.Fields[2].Size <> qry.FieldDefs[2].Size then qry.Fields[2].Size := qry.FieldDefs[2].Size; [EDIT] Kann natürlich Probleme geben, wenn das Active der Query auch schon zur Entwurfszeit gesetzt ist. Aber das kann ich ja nicht wissen. [/EDIT] |
AW: TField.Size zur Laufzeit anpassen ohne doppeltes Öffnen der Query
Dann ist das offenbar in einer neueren Version geändert worden. Wir haben eine etwas ältere, welche genau kann ich auf die Schnelle nicht sagen. Jedenfalls habe ich alle Ereignisse selbst ausprobiert mit unserer Version der IBObjects, bevor ich diesen Thread begonnen habe. Bei unserer Version sind sie im AfterPrepare noch nicht verfügbar.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 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 by Thomas Breitkreuz