Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi "Ungültiger Parameter" beim x-ten öffnen einer Tabelle (https://www.delphipraxis.net/73079-ungueltiger-parameter-beim-x-ten-oeffnen-einer-tabelle.html)

Baeuerle 12. Jul 2006 08:29

Datenbank: Paradox • Version: x • Zugriff über: BDE

"Ungültiger Parameter" beim x-ten öffnen einer Tab
 
Hallo zusammen,

habe leider ein sehr blödes Phänomen !

Der Aufbau:

Ich habe eine Paradox Tabelle, auf die mit verschiedenen Querys (Q1,Q2,Q3)zugegriffen wird.
Delphi-Quellcode:
Q1.SQL.text='Select Nr from Pos.db'+#10+
            'where Nr like :par';
Q1.Params.ParamByName('par').asString:='_.';

Q2.SQL.text='Select Nr from Pos.db'+#10+
            'where Nr like :par';
Q2.Params.ParamByName('par').asString:=Q1nr.asstring[1]+'._.';

Q3.SQL.text='Select Nr from Pos.db'+#10+
            'where Nr like :par';
Q3.Params.ParamByName('par').asString:=Q1nr.asstring[1]+'.'+Q2nr.asstring[3]+.___.';
Ich Schleife jeweils das Ergebnis durch. D.h. es werden folgende Nr gefiltert
0.0.000
bis
9.9.999

Da ich den Parameter von Q2 und Q3 immer wieder ändern muss, werden diese Querys immer wieder geschlossen und geöffnet. So nach ca. 1000 mal kommt beim öffnen plötzlich die Fehlermeldung "Ungültiger Parameter".

Tja, was nun? Der Parameter stimmt, der übergeben wurde. Für mich sieht es irgendwie nach einem Speicherproblem aus, denn beim erneuten Starten der Funktion kommt sofort die Meldung "Ungültiger Parameter" (auch bei einem Neustart der AW). Erst Abmelden/Anmelden hilft.

So bitte um eure Hilfe, danke.

marabu 12. Jul 2006 08:58

Re: "Ungültiger Parameter" beim x-ten öffnen einer
 
Hallo.

Wenn du auf die Bestandteile der Nr "1.2.345" zugreifen willst, solltest du über eine weitere Normalisierung nachdenken. Müsste das Pattern '_.' in der Query Q1 nicht besser '_.%' sein? Wenn du die Nummern nicht weiter zerlegen willst, würde ich wenigstens auf das tausendfache reopen verzichten. Kannst du den dahinter stehenden Anwendungsfall beschreiben? Vielleicht finden wir eine bessere Lösung. Wenn du den Verdacht auf Speicherprobleme hast, dann solltest du vielleicht mal MEMCHECK einsetzen.

Grüße vom marabu

Baeuerle 12. Jul 2006 09:16

Re: "Ungültiger Parameter" beim x-ten öffnen einer
 
Ich habe die Tabelle von einem Kunden bekommen. Die Tabelle beinhaltet eínzelne Textbausteine, die über die Nr aufgebaut sind.

Bsp.

Man wählt zunächst die Hauptgruppe 0. bis 9. danach stehen einem die Textteile der zweiten Gruppe zur Verfügung dann der Dritten. Ich soll die Tabelle in ein anderes Format (ASCII) bringen. Hierfür muss ich jeweils die einzelnen Gruppen durchlaufen, daher das reopen.

Zitat:

Zitat von marabu
Müsste das Pattern '_.' in der Query Q1 nicht besser '_.%' sein?

Nein, da der Aufbau der Nummern nicht immer 7 stellig ist. Ich möchte ja die Gruppen getrennt voneinander Filtern.

Q1 liefert die Hauptgruppe '_.'
Q2 liefert die Untergruppe '0._.'
Q3 die Detailgruppe '0.2.___'

Danke für deine Bemühungen.

marabu 12. Jul 2006 10:11

Re: "Ungültiger Parameter" beim x-ten öffnen einer
 
Ich verstehe das jetzt so, dass die Tabelle im Feld Nr eine Gliederungsstufennummer (1. oder 1.2. oder 1.2.345.) enthält. Auf der untersten Ebene findest du einen Textbaustein, auf den oberen Ebenen nur Gliederungstitel. Das Ergebnis einer Normalisierung wäre bei mir wahrscheinlich eine selbst-rekursive Tabelle TBS: ID (PK), TBS_ID (FK), NR, TEXT. Eine Umformung sollte in einem Durchgang möglich sein, wenn du ORDER BY NR verwendest.

Gruß

marabu

Baeuerle 12. Jul 2006 10:49

Re: "Ungültiger Parameter" beim x-ten öffnen einer
 
Ja, hast recht wenn die Tabelle sequentiell abgearbeitet wird ist das ganze kein Problem mehr!

Da hätte ich eigentlich auch selbst drauf kommen können :wall: .

Ich danke Dir für Deine Denkanstöße.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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-2025 by Thomas Breitkreuz