[Gelöst] Fehler mit SETRANGE & FINDFIRST

27. August 2009 21:51

Hallo zusammen :)

Ich habe ein merkwürdiges "Phänomen", dass ich mir nicht erklären kann und ich hoffe ihr könnt mir auf die Sprünge helfen.

Ich habe eine kleine Funktion die mir sagen soll, ob ein bestimmer Wert schon existiert oder nicht (eigentlich ganz simpel). Hier mal alles zur Funktion

Code:
HasValue(par_Date : Date; par_1 : Code[10];par_2 : Code[50];par_3 : Code[10]) : Boolean

AnyRec.RESET;
AnyRec.SETRANGE(Date, par_Date);
AnyRec.SETRANGE(ABC, par_1);
AnyRec.SETRANGE(Purchaser, par_2);
AnyRec.SETRANGE("Value for:", par_3);
AnyRec.SETRANGE("Line Code", 'TOTAL');
EXIT(AnyRec.FINDFIRST);


Und immer beim EXIT schmeisst er mir einen Fehler aus: "AnyRec existiert bereits. Identifizierende Felder und Werte: X, Y, Z". Das merkwürdige aber ist, dass es ganz andere Werte als die Parameter sind und ich ja auch kein INSERT mache. Ich habe schon im Debugger geschaut und die Parameter sind alle korrekt (also nicht X, Y, Z bzw. die identifizierenden Werte) und die Filterung macht er auch richtig (also mit den korrekten Parametern), wenn ich mir die Variable anschaue.
Es sind aber auch immer Werte von vorherigen Filterungen (so 3 Schleifendurchläufe vorher :-? )

Habt ihr eine Idee dazu?

Dank & Gruß
Kleba
Zuletzt geändert von Kleba am 28. August 2009 08:35, insgesamt 1-mal geändert.

Re: Fehler mit SETRANGE & FINDFIRST

27. August 2009 22:07

Hallo Simon,

auf den ersten Blick kann ich nichts in deinem C/AL-Code entdecken, was so eine Fehlermeldung rechtfertigt.

Jedoch ist mir aufgefallen, dass es dir in deiner Funktion nicht um den Inhalt eines bestimmten Datensatz geht, sondern nur darum, ob es überhaupt Datensätze unter diesen Bedingungen gibt.
Hier wäre ein ISEMPTY beim Exit besser/performanter.
Also:
Code:
[...]
EXIT(NOT AnyRec.ISEMPTY);


Wieso du jedoch die besagte Fehlermeldung erhältst, solltest du mal mittels Debugger erforschen.
Mit den bisherigen Informationen können wir leider nur Vermutungen anstellen, da der zur Verfügung gestellte Programmcode eine solche Fehlermeldung nicht auslösen dürfte.

Re: Fehler mit SETRANGE & FINDFIRST

28. August 2009 08:34

Hallo Timo,

danke für deine Antwort. Ich muss mich leider entschuldigen, manchmal hat man echt ein Brett vor'm Kopf und sollte eine Nacht über sein Problem schlafen, bevor man sich an euch wendet :-D Nach 11h NAV programmieren, hab ich doch tatsächlich übersehen, dass ich die Parameter an einer Stell falschrum übergeben habe (also quasi 1,3,2,4).

Shame on me :-|

Das konnte selbst im Debugger nur richtig aussehen, wenn man zulange davor hängt und noch dazu viel zu wenig Schlaf hatte :wink:

Insofern entschuldigt die Störung :oops:

LG
Simon