Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Fehler bei Bereichsprüfung (https://www.delphipraxis.net/169077-fehler-bei-bereichspruefung.html)

p80286 28. Jun 2012 11:28

AW: Fehler bei Bereichsprüfung
 
Zufällig geht es auch hier um ZEOS, demnach scheint es sich dabei um ein echte Krankheit zu handeln.

Hast Du es einmal mit abgeschalteter Bereichsprüfung versucht?

Gruß
K-H

Captnemo 28. Jun 2012 14:34

AW: Fehler bei Bereichsprüfung
 
Wenn du Projektoptionen - Compiler - Laufzeitfehler - Bereichsüberprüfung meinst, den hab ich schon die ganze Zeit abgeschaltet.

Ich habe jetzt die ganze Routine umgestellt. Ziel war, dem Benutzer aus den 3 Tabellen eine Feldauswahl zur Verfügung zu stellen, und hinterher die Daten entsprechend seiner Auswahl zu übernehmen. Ich mußte aber auch sicherstellen, dass mittels join die Daten der 3 Tabellen zusammen zu führen ist.

Im erten Ansatz wollte einfach alle Daten der 3 Tabellen erst einmal in meine MySQL-DB zu übernehmen um dann dem Benutzer seien Auswahl anzeigen zu lassen. Das hat aber auf Grund der hohen Feldanzahl zu dem bekannten Fehler geführt.

Jetzt bin anders herangegangen. Ich lese einfach vorab alle Feldnamen aus den 3 Tabellen aus, und übertrage diese in die Comboboxen für die Auswahl des Users. Erst wenn die Daten dann übernommen werden sollen, erstelle ich mir die TMP-Tabellen, aber eben nur mit den Feldern, die tatsächlich benötigt werden.
Dann klappt auch die Abfage mit Platzhaltern und (!) mit zwei JOIN's in der Abfrage (Fahrzeug -> Kunden -> Anrede).

Problem ist also für mich gelöst. Erkenntnis daraus: Ab einer gewissen Felderanzahl kommt Zeos einfach an seine Grenzen.
Sicherlich ließe sich in den Sources von Zeos das Problem ergründen, aber dazu fehlt mir jetzt die Muße.

(Wird Zeos eigentlich noch weiterentwickelt?) <- Nur mal so am Rande.

Captnemo 28. Jun 2012 23:11

AW: Fehler bei Bereichsprüfung
 
Eine Rückfrage im Forum ZeosLib hat alles bestätigt. Es wird je Row im Query-Result max. 32 kb reserviert. Interessant dabei ist, dass jeweils der maximal benötigte Platz eines Feldes verwendet wird, unabhängig ob sie NULL, leer, nur 2 Zeichen oder bis zu ihrer definierten Größe belegt ist. Das heist eine Feld varchar(200) belegt bei der Abfrag über Zeos immer 200 Byte im Speicher, egal was drin steht.
Das erklährt bei 330 Feldern schon so einiges (hab's jetzt aber nicht nachgerechnet).

Hier der Link zum Thread (wenn das hier an dieser Stelle nicht erlaubt, bitte bescheid geben)
http://zeos.firmos.at/viewtopic.php?t=3531

Ab Zeos 7 soll der Buffer auf 64 kb erhöht sein.

Uwe Raabe 29. Jun 2012 10:35

AW: Fehler bei Bereichsprüfung
 
Zitat:

Zitat von Captnemo (Beitrag 1172911)
Ab Zeos 7 soll der Buffer auf 64 kb erhöht sein.

Was das Problem im Grunde aber nicht löst.

Captnemo 29. Jun 2012 17:58

AW: Fehler bei Bereichsprüfung
 
Richtig. Und im Zuge der Entwicklung, und der immer größer werdenden Speicher, und der zu verwaltenden Datenmengen, ist das Problem damit nur weiter in die Zukunft verlagert.

Noch besser wäre es natürlich einen solchen Fehler anzufangen, und ggf. wenigstens eine Teilmenge zurückzuliefern. Und noch besser wäre es, wenn innerhalb der Komponenten der Buffer vom Entwickler festgelegt werden könnte.

Aber immerhin. Jetzt, wo ich davon weiß, finde ich Möglichkeiten mir zu helfen. Bedeutet zwar mehr Programmieraufwand, aber damit kann ich leben.


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

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