Autor |
Beitrag |
derfnam
Hält's aus hier
Beiträge: 2
Win XP
D5 Prof, D7 Prof
|
Verfasst: Fr 13.02.04 18:27
Hi Leute,
ich bin dabei, eine Anwendung mit einer riesigen Refferenztabelle zu erstellen. Dazu habe ich eine Paradox-Tabelle mit 20 Feldern erstellt und diese dann zu Testzwecken mit Daten gefüllt. Nun mein Problem: Bei ~262000 Datensätzen bekomme ich die Meldung, das keine weiteren Datensätze hinzugefügt werden können. Da aber geplant ist, mehr als das dreifache an Daten unterzubringen stehe ich nun vor einem Problem.
Die Datenbank hat hat dann eine Größe von ~255MB.
Wenn Paradox nicht mehr Daten verwalten kann, welche könnte es dann?
Ach so, das ganze passiert unter Delphi 7.
Wäre schön, wenn jemand einen Tip für mich hätte
_________________ mfg
M.Rose
|
|
tomtom62
Beiträge: 278
WIN 2000, XP prof
D5 prof.
|
Verfasst: Fr 13.02.04 19:07
Für solche Datenmengen solltest Du eine "richtige" Datenbank nehmen. Probier mal Firebird (Interbase-Clone).
Ist kostenlos und ein paar, wenn auch nicht übermässig gute, Komponenten dafür sind bei Delphi auch schon dabei...
|
|
grayfox
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Sa 14.02.04 13:57
hallo manfred!
starte den BDE-Administrator, wähle das register 'Configuration', klick auf das plus vor drivers und dann native, wähl paradox aus und ändere die blocksize von 2048 auf 32768 und den level auf 7.
somit dürfen die paradox-tabellen 2.147.483.647 byte gross werden. wieviele datensätze das sind hängt von der anzahl, dem typen und der grösse der stringfelder deiner tabellen ab
achtung: die änderungen werden erst ab der nächsten angelegten tabelle wirksam, da die blocksize von bestehenden tabellen nicht geändert werden kann --> neue tabelle anlegen und deine daten dorthin übernehmen...
mfg, stefan
|
|
derfnam
Hält's aus hier
Beiträge: 2
Win XP
D5 Prof, D7 Prof
|
Verfasst: Mo 16.02.04 07:50
Titel: Danke
Hallo Stefan,
der Tip hat wunderbar hingehauen.
Ich bekomme nun über 2Mio Einträge in meine Datenbank. Das sollte ersteinmal genügen.
Vielen Dank noch mal.
mfg
Manfred
_________________ mfg
M.Rose
|
|
grayfox
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Di 17.02.04 00:20
hallo fred!
freut mich, dass ich dir weiterhelfen konnte. jetzt kannst wieder eine ganze menge daten in deiner tabelle unterbringen
mfg, stefan
|
|
tsd
Hält's aus hier
Beiträge: 6
|
Verfasst: Sa 23.05.20 18:33
Hallo,
Jahre später muß ich noch mal in die alte Datenbank rein.
Delphi 2010, Paradox 4.0, Abfrage funktioniert: Daten aus einer Haupttabelle und ein paar weiteren Tabellen werden über eine Abfrage zusammen gesammelt und sollen in einem Unterformular für die Details angezeigt werden.
Problem: Das klappt alles bis Datensatz 32768. Bei Datensatz 32768 und höher werden nur die Daten angezeigt, die aus der Haupttabelle stammen. Die Daten der anderen Tabellen werden im Detailformular nicht angezeigt. Diese Daten sind aber vorhanden.
Danke fürs Reindenken!
Viele Grüße
Thomas
|
|
mandras
Beiträge: 430
Erhaltene Danke: 107
Win 10
Delphi 6 Prof, Delphi 10.4 Prof
|
Verfasst: Sa 23.05.20 22:22
Guten Abend,
da ich den Aufbau Deiner DB nicht kenne ist meine Vermutung reinste Spekulation.
Kann es sein daß die Detaildatensätze mittels eines short-Int-Feldes auf den
Datensatz der Haupttabelle zeigen und aus irgendwelchen Gründen schon bei 2^15 das nicht mehr
richtig funktioniert? Dann als Datentyp einen 32Bit-Int-nehmen
Für diesen Beitrag haben gedankt: tsd
|
|
tsd
Hält's aus hier
Beiträge: 6
|
Verfasst: So 24.05.20 03:42
Vielen Dank Mandras, das muß ich prüfen - liegt auf der Hand, gute Idee!
Genau das war der Grund: Ich hatte per parambyname den Parameter befüllt und assmallint verwendet. Jetzt habe ich asinteger dafür eingesetzt und alles funktioniert.
Moderiert von Th69: Delphi-Tags hinzugefügt
|
|
tsd
Hält's aus hier
Beiträge: 6
|
Verfasst: So 24.05.20 09:43
gibt‘s denn eine Möglichkeit, sich so was von Delphi beim Compilieren anzeigen zu lassen als Fehlerquelle? Delphi kann es ja eigentlich nicht wissen, was da für Werte ankommen?
Auch bei der Programmausführung gab‘s keine Fehlermeldung. Wahrscheinlich ist die Abfrage mit irgendeinem unsinnigen Wert durchgeführt worden, der natürlich nicht gefunden wurde. Weiß jemand, welcher Wert da übertragen wird , wenn smallint z.B. mit dem Wert 40.000 belegt wird?
|
|
ub60
Beiträge: 762
Erhaltene Danke: 127
|
Verfasst: So 24.05.20 11:06
tsd hat folgendes geschrieben : | Weiß jemand, welcher Wert da übertragen wird , wenn smallint z.B. mit dem Wert 40.000 belegt wird? |
Das kannst Du selber testen:
Delphi-Quelltext 1: 2: 3: 4: 5:
| var i: Smallint; begin i:=StrToInt(Edit1.Text); ShowMessage(IntToStr(i)); end; |
Hier konkret kommt -25536 heraus.
ub60
Für diesen Beitrag haben gedankt: tsd
|
|
tsd
Hält's aus hier
Beiträge: 6
|
Verfasst: So 24.05.20 19:18
und eine Syntaxprüfung oder Compilierhilfe gibt‘s da nicht, die das automatisch prüft und beim Compiliere meldet?
|
|
ub60
Beiträge: 762
Erhaltene Danke: 127
|
Verfasst: So 24.05.20 23:14
tsd hat folgendes geschrieben : | und eine Syntaxprüfung oder Compilierhilfe gibt‘s da nicht, die das automatisch prüft und beim Compiliere meldet? |
Prinzipiell kann Delphi das. Hier gäbe es z.B. schon einen Fehler beim Compilieren.
Delphi-Quelltext 1: 2: 3: 4: 5:
| var i: Smallint; begin i:=40000; ShowMessage(IntToStr(i)); end; |
Leider habe ich keine Ahnung, wie das bei Paradox geregelt ist.
ub60
Für diesen Beitrag haben gedankt: tsd
|
|