Temporäre Tabelle per Code öffnen

22. Oktober 2020 10:19

Hallo zusammen,

ich wollte in einer Codeunit auf einer temporären Tabelle ein paar Daten sammeln und die dann direkt noch im Code öffnen um zu überprüfen ob meine Filterungen alle richtig waren und wie viele es sind etc.
Halt einfach mal die ganzen Daten sehen. Eventuell die dann auch direkt in Excel per strg + E exportieren.
Jedoch habe ich keine Funktion dafür gefunden. Im Oject Designer kann man ja schließlich auch eine Tabelle direkt öffnen ohne die Form oder Page dazu zu öffnen.
Ist mein Vorhaben möglich und wenn ja wie?
wenn man dazu aber eine Form oder Page öffnen muss wie würde das dann gehen? oder braucht man vielleicht hierfür sogar einen Report, wenn ja wie müsste ich das in meiner CodeUnit implementieren?

Nochmal explizit. Ich möchte das alles über meine CodeUnit steuern und nicht extra ein Report dafür basteln

Danke im Voraus für eure hilfe :)

Re: Temporäre Tabelle per Code öffnen

22. Oktober 2020 11:13

Im Codeunit die Tabelle MyBufferTemp füllen, wenn voll, dann sinngemäß so die Form aufrufen:
Code:
MyBufferForm.FillForm(MyBufferTemp);
MyBufferForm.RUNMODAL;


In der MyBufferForm (SourceTable: MyBufferTemp, mit SourceTableTemporary = Yes) diese Funktion einbauen:
Code:
FillForm(VAR MyBufferTemp : Record MyBufferTemp)
IF MyBufferTemp.FINDSET THEN
  REPEAT
    Rec := MyBufferTemp;
    Rec.INSERT;
  UNTIL MyBufferTemp.NEXT = 0;

Re: Temporäre Tabelle per Code öffnen

22. Oktober 2020 11:48

Heißt ja aber, dass ich eine Form bzw. eine Page erstellen und einrichten muss und eine Funktion in dieser implementiere. und genau das will ich ja nicht.
Ich möchte mich nicht aus meiner CodeUnit herraus bewegen müssen.
Ich will relativ flexibel sein und zum Beispiel mal schnell die temporäre Tabelle "Item", später irgendwann temporäre Tabelle "Sales Header" und noch später irgend eine x beliebige Temporäre Tabelle anschauen, ohne jedes mal zuvor eine Form oder Page hierfür einzurichten.
Zuletzt geändert von Kowa am 22. Oktober 2020 13:36, insgesamt 1-mal geändert.
Grund: Vollzitat entfernt

Re: Temporäre Tabelle per Code öffnen

22. Oktober 2020 12:00

Wenn du im CC arbeitest und eine Standardform definiert ist, sollte es so gehen:
Code:
form.run(0,DeinRecord);
.

Und bitte zitiere nicht einen kompletten Beitrag (der steht sowieso schon darüber :wink:).

Re: Temporäre Tabelle per Code öffnen

22. Oktober 2020 12:44

McClane hat geschrieben:Wenn du im CC arbeitest und eine Standardform definiert ist


funktioniert das auch mit einer standardPage? und wie sieht die Einrichtung einer solchen Form aus?

Re: Temporäre Tabelle per Code öffnen

22. Oktober 2020 13:02

Page geht prinzipiell genauso. Die Standardpage/-form ist in der Einrichtung der Tabelle (LookupFormID) definiert.

Re: Temporäre Tabelle per Code öffnen

22. Oktober 2020 13:25

McClane hat geschrieben:Die Standardpage/-form ist in der Einrichtung der Tabelle (LookupFormID) definiert.

Eine Standardpage hat aber niemals SourceTableTemporary = Yes.

Re: Temporäre Tabelle per Code öffnen

22. Oktober 2020 13:44

Hat mir noch nie Probleme bereitet; was meinst du damit?

Ok, man sollte die Finger von den Actions lassen, aber zur Anzeige reicht es doch aus.

Re: Temporäre Tabelle per Code öffnen

22. Oktober 2020 14:14

Man kann auch eine Page (ohne SourceTableTemporary=Yes) mit einem temporären Record aufrufen.
Code:
Page.RUNMODAL(PAGE::"Item List",TempItem);


Wenn wir mal eine(n) Page, Report, Codeunit, ... zu Testzwecken benötigen, haben wir bei uns eine ganz bestimmte ID definiert, welche für solche Zwecke zu verwenden ist und nicht für produktive Einsatzzwecke verwendet werden darf.
Will ich mir also die temporär gesammelten Daten einer "Buffer"-Tabelle anzeigen lassen, so baue ich unsere Test-Page mal eben auf diese Tabelle um und kann sie in der Codeunit aufrufen.

Wenn sich herausstellt, dass man diese Page dauerhaft behalten will, bekommt sie eine "richtige" ID.
So brauchten wir mal die Daten aus der Tabelle "Active Session", um auch die Sessions auf den anderen ServiceTiers sehen zu können.
Als unsere NAV-Supporter das gesehen hatten, wollten die die Page dauerhaft behalten, damit sie schnell sehen können, auf welcher Maschine der User gerade unterwegs ist, um sich dorthin spiegeln zu können. 8-)

Re: Temporäre Tabelle per Code öffnen

22. Oktober 2020 14:43

McClane hat geschrieben:Hat mir noch nie Probleme bereitet; was meinst du damit?

Ok, man sollte die Finger von den Actions lassen, aber zur Anzeige reicht es doch aus.

Der "normale" User wird kaum unterscheiden können, woher die Daten kommen, wenn man die Standardpage startet. In der temp. Tabelle kann ja alles mögliche stehen, was u.U. nur bedingt mit den reellen Inhalten der Datenbank zu tun hat.
Für sich selber kann man das zu Kontrollzwecken sicher machen, für den allgemeinen Gebrauch sehe ich das eher kritisch.

Re: Temporäre Tabelle per Code öffnen

22. Oktober 2020 14:45

McClane hat geschrieben:
Code:
form.run(0,DeinRecord);


Perfekt danke! Ich habs getestet und es ist genau das was ich brauche.
Leider passiert nichts wenn ich das selbe mit PAGE.RUN mache und ich arbeite ehrlicherweiße lieber mit dem RTC. Dabei kommt weder eine Fehlermeldung oder sonst noch was. Der Code durchläuft aber eine Page wird nicht geöffnet.
Eventuell liegt es daran, dass ich wie oben irgendwo kurz angedeutet wurde, noch eine Standardt Page einrichten muss. Wenn dies der Fall wäre wie würde ich eine sogenannte Standardt Page einrichten?

Re: Temporäre Tabelle per Code öffnen

22. Oktober 2020 15:29

Das ist die Page mit dem gleichen Namen, der in LookupFormID steht. Evtl. gibt es diese Page bei dir nicht, daher wird auch nichts geöffnet.

Re: Temporäre Tabelle per Code öffnen

22. Oktober 2020 15:30

Page.RUN(0,DeinRecord) funktioniert nur, wenn in der Tabelle von DeinRecord auch eine LookUpPageID hinterlegt ist.
In dem Fall musst du die Page-ID direkt angeben:
Page.RUN(4711,DeinRecord)