Autor Beitrag
derfnam
Hält's aus hier
Beiträge: 2

Win XP
D5 Prof, D7 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 278

WIN 2000, XP prof
D5 prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 2

Win XP
D5 Prof, D7 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: 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: 4



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 429
Erhaltene Danke: 107

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: 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: 4



BeitragVerfasst: 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 user profile iconTh69: Delphi-Tags hinzugefügt
tsd
Hält's aus hier
Beiträge: 4



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 762
Erhaltene Danke: 127



BeitragVerfasst: So 24.05.20 11:06 
user profile icontsd hat folgendes geschrieben Zum zitierten Posting springen:
Weiß jemand, welcher Wert da übertragen wird , wenn smallint z.B. mit dem Wert 40.000 belegt wird?

Das kannst Du selber testen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var i: Smallint;
begin
  i:=StrToInt(Edit1.Text);  // Hier 40000 eingeben.
  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: 4



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 762
Erhaltene Danke: 127



BeitragVerfasst: So 24.05.20 23:14 
user profile icontsd hat folgendes geschrieben Zum zitierten Posting springen:
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.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var i: Smallint;
begin
  i:=40000;  // Hier gibt es schon beim Compilieren einen Fehler!
  ShowMessage(IntToStr(i));
end;


Leider habe ich keine Ahnung, wie das bei Paradox geregelt ist.

ub60

Für diesen Beitrag haben gedankt: tsd