[gelöst] Textfilter über 1024 Zeichen?

12. Februar 2009 16:07

Hallo @ all...

Ich habe ein Problem mit meiner Programmierung ....

Ich muß Daten aus der postentabelle mehrmals gegeneinander laufen lassen, um verbrauchsund Istmeldungen gegeneinander zu stellen...
Schwierig zu erklären ist für eine Mengenbilanz gedacht.

Ich musste mir einen Filter aus den Posten basteln.. mit der Journalnummer+ '|' ....

Ich schreibe diesen Filter also in eine Globale Var TEXT (1024) Zeichen, um sie dann wieder darauf zu verwenden, den selben Datensatz anders zu Filtern , in einer anderen record - Var...
Leider geht das scheibar ohne diesen "gebastelten" Filter nicht.

So sieht derzeit mein Code aus

Code:
  IF posten.FINDSET THEN BEGIN
    REPEAT;
    IF STRPOS(Jounalfilter, FORMAT(posten."Journal No.")) = 0 THEN
      Jounalfilter += FORMAT(posten."Journal No.")+'|'
    UNTIL posten.NEXT = 0;
    END;
    Jounalfilter:= DELCHR(Jounalfilter,'>','|');


Nun meine Frage: Kann ich diesen Filter irgendwo anders hinschieben? gibt es z.B. eine Möglichkeit in einer Tabelle einen Datensatz von mehr als 1024 Zeichen
zu hinterlegen? für einen Monat geht es super...sonst...bei mehr Überlauf bei Kalkulation......

Oder einer ne andere Idee wie ich das drehen kann?

Gruß Matthias
Zuletzt geändert von himi81 am 18. Februar 2009 08:16, insgesamt 1-mal geändert.

Re: Textfilter über 1024 Zeichen?

12. Februar 2009 17:21

Hallo Matthias,

wie wäre es mit einer temporären Tabelle, die einfach nur aus einem Feld "Journalnummer" besteht?
Dort wo Du jetzt den Filter aufbaust, legst Du für jede gefundene Journalnummer einen Datensatz an und für den Zugriff auf die andere Record-Variable kannst Du die Eintrage der Reihe nach abarbeiten.

Re: Textfilter über 1024 Zeichen?

12. Februar 2009 17:28

himi81 hat geschrieben:So sieht derzeit mein Code aus

Code:
  IF posten.FINDSET THEN BEGIN
    REPEAT;
    IF STRPOS(Jounalfilter, FORMAT(posten."Journal No.")) = 0 THEN
      Jounalfilter += FORMAT(posten."Journal No.")+'|'
    UNTIL posten.NEXT = 0;
    END;
    Jounalfilter:= DELCHR(Jounalfilter,'>','|');


Nichts für ungut, aber ich glaube, du hast ein paar kleine Fehler in deiner Schleife:
  1. Nach dem REPEAT darf kein Semikolon folgen
  2. Das END; sollte als letzte Zeile stehen, da das DELCHR nur ausgeführt werden braucht, wenn in der Schleife auch Zuweisungen erfolgten.
Ergebnis:
Code:
IF posten.FINDSET THEN BEGIN
  REPEAT
    IF STRPOS(Jounalfilter, FORMAT(posten."Journal No.")) = 0 THEN
      Jounalfilter += FORMAT(posten."Journal No.")+'|'
  UNTIL posten.NEXT = 0;
  Jounalfilter := DELCHR(Jounalfilter,'>','|');
END;

Re: Textfilter über 1024 Zeichen?

13. Februar 2009 00:13

woger hat geschrieben:wie wäre es mit einer temporären Tabelle, ... kannst Du die Eintrage der Reihe nach abarbeiten.


Hallo Matthias,

die Idee, einen Filter in eine Variable zu speichern, finde ich überhaupt nicht gut. Erst mal – basteln, zweitens - die Grenze (Länge) kann immer erreicht werden. Wie hast du dir vorgestellt, in diesem Fall auszukommen. In solchen Fällen, wo die Anzahl von irgendwas auf der Datenebene nicht vorhersehebar ist, ist die temporären Tabellen die beste Lösung (hier schließe ich mich woger an). Das ist ein sehr mächtiges Werkzeug.

Wenn du wenig Erfahrung damit hast, überlege, was du erreichen möchtest und einfach probiere bzw. teste. Auf Dauer wird es sich auf jeden Fall lohnen. Je besser man das beherrscht, desto kompliziertere Zusammenhänge kann damit bewältigt werden.

Gruß, Michael

Noch ne Frage...

13. Februar 2009 09:59

Ok, mit der Temp Tabelle das hab ich schonmal gesehen, hab grad auch mal ein bisschen rumprobiert... bis zum Systemabsturz...
Mein Fehler war wohl das ich keine Tabelle genommenhabe die als Primärkey Integral hat , und habe mit Format und wieder Format alles gewandelt und gewandelt..... Das scheint er nicht gemocht zu haben.
Weiß jemand ne Tabelle die Intgr als Schlüssel hat, und nicht zu groß ist?

Gruß Matthias

Re: Textfilter über 1024 Zeichen?

13. Februar 2009 13:22

Hallo Matthias,

ich kann Deinen Status (Endanwender oder Partner) nicht erkennen. Wenn es aber Deine Lizenz zulässt, kannst Du Dir einfach eine neue Tabelle definieren und dann als tmp. verwenden. Eine tmp. definierte Tabelle, die nur für eine interne Verarbeitung verwendet wird, muss nicht in der Kundenlizenz freigeschaltet werden.
Wenn Du natürlich mit einer Kundenlizenz entwickelst, muss diese Tabelle darin freigeschaltet sein.

Re: Textfilter über 1024 Zeichen?

18. Februar 2009 08:15

Super Danke!

Habs mit den TEMP-Tabellen gemacht, ist eigendlich ganz einfach...

Danke nocjmals an Alle...