CAL-Code zur Laufzeit durchsuchen?

24. März 2007 11:28

Guten Morgen,

wahrscheinlich geht das nicht, oder?

Ich möchte den CAL-Code einer Tabelle zur Laufzeit durchsuchen.

Ich habe ein Änderungsprotokoll gebastelt. Um die Tabellen-Felder aber zu protokollieren ist zusätzlicher Code in den Tabellen notwendig.

In den Einstellungen des Protokolls können User (nur Admins) eine ganze Tabelle oder auch einzelne Felder zur Protokollierung einstellen.
Diese Auswahl basiert auf der Tabelle "Field", aus der ich nur die Tabellen mit Felder anzeigen lasse, die auch über den zusätzlichen Code verfügen. (Sonst wird die Protokollierung bei Änderung ja nicht gestartet.)

Im Moment (Dank noch mal an Natalie, vgl. Beitrag von gestern) schreibe ich die Tabellen, die bereits den Code besitzen, manuell in den OptionString einer Variabel, lese diese zur Laufzeit wieder aus und "erzwinge" per Markedonly die Auswahl der Tabellen, die Admins bei der Einstellung des Protokolls auswählen können. (Ich hoffe, das ist nachvollziehbar.)

Das funktioniert soweit hervorragend, aber trotzdem stört mich noch dieser manuelle Schritt, den OptionString zu aktualisieren, wenn ich wieder eine neue Tabelle bearbeitet habe und sie somit "protokollfähig" ist.

Gibt es eine Möglichkeit den CAL-Code einer Tabelle zur Laufzeit(!) zu durchsuchen und z.B. eine Boolean-Variabel zu füllen, wenn meine Codezeile gefunden wird?

Eine Andere Möglichkeit wäre vielleicht noch, die Tabelle, in der die Objekte gespeichert werden (also, die Daten, die im Objekt-Designer gezeigt werden) um ein Feld zu erweitern und dort ein Haken zu setzen, aber das erscheint mir noch schwieriger, da diese Tabelle bestimmt eine ähnliche sein wird wie die "Field" und dort kann ich auch kein Feld hinzufügen, oder?

Oder hat jemand noch eine ganz andere Idee, wie ich das sinnvoll lösen kann. Ich muß irgendwo speichern welche Tabellen bereits bearbeitet wurden. Bitte keine zusätzliche Tabelle, wir haben leider keine lizensierte mehr und ich mußte bereits bestehende rauswerfen, um mein Projekt umzusetzen. Also bin ich mit Tabellen sparsam.

Danke für eure Zeit.

24. März 2007 22:31

Hi Dune,

ich habe jetzt mehrere Male versucht, genau nachzuvollziehen, wonach genau du suchst, aber ich raffs nicht *G*

Also, was genau stellst du dir darunter vor?

Gibt es eine Möglichkeit den CAL-Code einer Tabelle zur Laufzeit(!) zu durchsuchen und z.B. eine Boolean-Variabel zu füllen, wenn meine Codezeile gefunden wird?


Grundsätzlich funktioniert es doch so: Du schreibst in deinen Tabellen eine zusätzlich Funktion, die dir auf Abruf eben einen solchen Booleanwert zurück liefert. Aber selbst damit ist mir nicht klar, inwiefern dir das helfen soll?

25. März 2007 03:00

Soweit ich das verstanden habe, möchte Dune eine Tabellen-Form bauen, die beim Öffnen andere Tabellen daraufhin untersucht, ob dort Code zur Protokollierung hinterlegt ist, und wenn ja für welche Felder.
Das Ergebnis möchte er in dieser Tabelle darstellen, so dass der für die Protokollierung verantwortliche Mitarbeiter dann bestimmen kann, was von den Daten, die protokolliert werden können, auch wirklich protokolliert werden soll.

25. März 2007 11:30

Im folgenden nur ein rein gedanklicher Ansatz, dies praktisch umzusetzten wäre wohl ziemlich "tricky" ...

Erstmal: Mit "Bordmitteln" gibt es keine Möglichkeit, den Code zu durchsuchen. CODECOVERAGE wäre prinzipiell dazu in der Lage, dies würde aber voraussetzen, daß der entsprechende Code durchlaufen wird; ein globales Suchen ist nicht möglich.

Denkbar wäre folgendes:
Auf irgendein Ereignis hin, eben welches den "Change Log" Eintrag erzeugen soll, wird das Objekt, das durchsucht werden soll, in eine Text-Datei exportiert. Um dies automatisiert hinzubekommen müsste ein entsprechendes VB/Java-Script erzeugt und ausgeführt werden, welches über den "Windows Script Host" unter Verwendeung der "SendKey" den Export vollzieht. Danach könnte eine Codeunit das Text-File nach dem entsprechenden Text durchsuchen und die benötigte "Meldung" and das "Changel Log" geben.
Hört sich kompliziert an, ist es mit Sicherheit auch :twisted: - aber machbar!

26. März 2007 10:07

Ein schönen guten Montag Morgen allerseits.

Danke für eure Zeit. Michael und Stryk haben im Prinzip recht: ich hatte die Idee, den CAL-Code zu durchsuchen und so herauszufinden ob mein Code in einer Tabelle vorhanden ist oder nicht.

Ich hatte mir schon fast gedacht, dass das so einfach nicht möglich ist, aber Fragen kostet ja nichts (außer Zeit :-)) und das wäre eine sichere Methode.

@Stryk: deine Idee versteh ich und du hast recht, das würde echt "tricky" werden, aber ich probier mal ´n bißchen rum. Vielleicht halb so wild. :roll:

Nee, das Ergebnis würde den Aufwand nicht rechtfertigen. Da geh ich lieber den Weg über meine Variabel und deren OptionString-Property.

Danke. Bis bald.