Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Einträge aus Datenbankfeld in Combobox (https://www.delphipraxis.net/206884-eintraege-aus-datenbankfeld-combobox.html)

hoika 6. Feb 2021 11:55

AW: Einträge aus Datenbankfeld in Combobox
 
Hallo,
ohne die DB wird das aber nichts.

Schon mal durchdebuggt?
Klammere einfach mal alles aus und dann schrittweise wieder rein.

NoGAD 7. Feb 2021 11:10

AW: Einträge aus Datenbankfeld in Combobox
 
Dauert noch etwas, ich bin noch auf der Suche :-(

Danke erstmal.

LG :-)

himitsu 7. Feb 2021 11:27

AW: Einträge aus Datenbankfeld in Combobox
 
Bei Google suchenAQTime / Hier im Forum suchenAQTime und auch im GetIt zu finden
https://www.youtube.com/watch?v=OZzY_2JqdGY
https://www.youtube.com/watch?v=ZTBM8cIucEE
https://www.youtube.com/watch?v=WKQh-fiXpKI



Aber beachte, dass Messen das Gemessene auch etwas beeinflussen kann.
Ich hatte mal eine "winzige" oft durchlaufene Schleife, die in Real fast keine Zeit brauchte, aber beim Messen angeblich der Hauptverursacher war. (ein bissl nachdenken sollte man also dennoch)

NoGAD 8. Feb 2021 03:49

AW: Einträge aus Datenbankfeld in Combobox
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mal ein Testprogramm erstellt.

Falls jemand von euch ABSDatabase einsetzt oder die Demo ausprobieren möchte, kann mir eventuell weiterhelfen.

In der Unit
Code:
Unit_ABS_Functions_01.pas
gibt es die Function
Code:
function Restructure_Table_Query(_Database_Construct: TABS_Construct; _Table_Construct: TTable_Construct): TABS_Function_Result;
Diese wird intern durch eine andere Function aufgerufen.

Bei einer größeren Datenbank (2000 +) dauert es unglaublich lange, bis die Tabelle restrukturiert wird.

Vielleicht fällt euch dazu noch was ein :-)

Nachtrag:

In der Unit
Code:
Unit_initialization_01
kann die Zeitmessung aktiviert werden:
Code:
_DebugTimeKeeper := true;


LG Mathias

hoika 8. Feb 2021 05:33

AW: Einträge aus Datenbankfeld in Combobox
 
Hallo,
was hat das jetzt mit dem Originalproblem zu tun?

hoika 8. Feb 2021 08:37

AW: Einträge aus Datenbankfeld in Combobox
 
Hallo,
ich habe mal kurz draufgeschaut.

1. Du mischst Tables und Queries (dort auch RequestLive=True?)
2. "WHERE 1 = 0" könnte ein Full Table Scan werden (wenn ADS nicht so gut optimiert)

Ich würde mal nachschauen, ob du bei ABS nicht an die Systemtabelle (Systemkatalog) rankommst. Dort stehen alle Tabellen/ Felder/ Feldtypen drin.
Dann musst du nicht durch irgendwelche Queries gehen, ob festzustellen, ob der Datentyp stimmt.

Da du ja jetzt weisst, dass die Methode langsam ist, Debugger anwerfen.

Frickler 8. Feb 2021 09:26

AW: Einträge aus Datenbankfeld in Combobox
 
Zitat:

Zitat von hoika (Beitrag 1482460)
Ich würde mal nachschauen, ob du bei ADS nicht an die Systemtabelle (Systemkatalog) rankommst. Dort stehen alle Tabellen/ Felder/ Feldtypen drin.
Dann musst du nicht durch irgendwelche Queries gehen, ob festzustellen, ob der Datentyp stimmt.

Da du ja jatzt weisst, dass die Methode langsam ist, Debugger anwerfen.

ABS, nicht ADS. ABS = "Absolute Database" ist eine reine ISAM-Datenbank mit aufgepfropftem SQL (so wie die BDE Paradox zu SQL verhalf). SQL ist da langsamer, als wenn man navigierend durch die Datenbank geht - es ist nur bequemer für komplexe Abfragen. Darum ist es wichtig, Indexe zu nutzen, und dann per SetRange durch die Daten zu gehen.

NoGAD 8. Feb 2021 17:01

AW: Einträge aus Datenbankfeld in Combobox
 
Danke. Ich teste mich mal durch.

LG Mathias. :-)

NoGAD 11. Feb 2021 16:10

AW: Einträge aus Datenbankfeld in Combobox
 
Zitat:

Zitat von Frickler (Beitrag 1482466)
SQL ist da langsamer, als wenn man navigierend durch die Datenbank geht ...


Da hat Frickler recht, ich habe Herrn Lysenko, der Inhaber/Entwickler der Datenbank, per E-Mail angefragt, ob es dazu eine schnellere Möglichkeit gibt.

Hier die Antwort:


Hello Mathias,

Thank you for your question.
Now each table could be modified several times (once for adding field, then for modifying field size, ...)
But ALTER table is very time-consuming operation if table is large.

You can speed up this procedure, if you will use
1 TABSTable.RestructureTable call for all table structure modifications (adding fields, change field size, ...)
See https://componentace.com/help/absdb_...ringtables.htm

Best regards,
Andrey Lysenko


Kleine Notiz am Ende, der Thread ist für mich auch abgeschlossen.

Nach viel Überlegung, ist mir bewusst geworden, dass es im Prinzip ja auch viel, viel einfacher wäre, wenn ich separate Tabellen für bestimmte Einträge anlege. Hier z.B. für Autoren und Verlage, ebenso für Bücherschränke/Zimmer, in denen die stehen/Regale/Fächer. Dann kann ich die schneller in eine Combobox einlesen, weil es im Prinzip nur einmal und nicht n-mal in einer Tabelle vorkommt. Oder eben gleich in eine DBCombobox.

Das Thema Datenbank ist für mich immer noch absolut abstrakt. Ich komme ständig an meine Grenzen der Lernbarkeit - weil ich es einfach nicht begreife.

Dafür ist mir letzte Nacht eine (aus meiner Sicht) tolle Idee eingefallen, wie ich unabhängig von einem Generalschlüssel eine Datenbankverschlüsselung erreichen kann, die dennoch mit einer Art Generalschlüssel versehen werden kann. Dazu mache ich einen separaten Thread auf, zu finden hier: https://www.delphipraxis.net/206951-...-masterkey.htm


LG Mathias :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:56 Uhr.
Seite 2 von 2     12   

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