[CC] UseReqForm bei Dataport im Code setzen

31. Juli 2015 09:54

Hallo,

gibt es irgendeine Möglichkeit, bei Dataports die RequestForm zur Laufzeit auszuschalten und gleichzeitig den Dateinamen zu übergeben?

Hintergrund ist folgender: Ich habe einen Dataport, der für zwei Anwendungsfälle genutzt wird, einmal durchläuft er selbstständig ein Verzeichnis, ein anderes Mal soll der User eine Datei auswählen können. Um aber das Verzeichnis zu durchlaufen, muss ich den Dataport als Variable anlegen, damit ich eine Funktion aufrufen kann, die den Dateinamen vor dem Variable.RUNMODAL übergibt. Dann kann ich aber die RequestForm nicht ausschalten, denn das geht ja nur mit DATAPORT.RUNMODAL(), u.s.w.

Ich möchte nur sehr ungerne zwei Dataports verwenden und Änderungen dann immer in beiden nachtragen.

Gibt es irgendeine Möglichkeit? Mir fehlt quasi ein USEREQUESTFORM(FALSE), wie beim Report.

Re: [CC] UseReqForm bei Dataport im Code setzen

31. Juli 2015 10:06

Ich selber arbeite schon ewig nicht mehr mit Dataports, aber folgende Lösung hat sich bei Reports bewährt:
Im OnOpenForm der RequestForm eine Boolean-Variable "ReqFormUsed" auf TRUE setzen.
Im OnPreDataPort kannst du dann die Variable abfragen und entsprechend darauf reagieren (z. B. Dateinamen aus einer Einrichtungstabelle holen, ...).

Re: [CC] UseReqForm bei Dataport im Code setzen

31. Juli 2015 10:33

Schau dir auch mal den Onlinehilfeartikel "Properties for a Dataport" an (inkl. der Gänsefüßchen die Suchfunktion nutzen) ;-)
Wichtig ist, dass du eine Variable mit Datentyp Dataport verwendest, wenn du den Dataport per Code aufrufen möchtest.

Re: [CC] UseReqForm bei Dataport im Code setzen

31. Juli 2015 11:19

Timo Lässer hat geschrieben:Ich selber arbeite schon ewig nicht mehr mit Dataports, aber folgende Lösung hat sich bei Reports bewährt:
Im OnOpenForm der RequestForm eine Boolean-Variable "ReqFormUsed" auf TRUE setzen.
Im OnPreDataPort kannst du dann die Variable abfragen und entsprechend darauf reagieren (z. B. Dateinamen aus einer Einrichtungstabelle holen, ...).


Vielen Dank. das ist keine schlechte Idee! Ich könnte also, wenn ich das richtig verstanden habe:

- eine Schleife über die Dateien durchlaufen
- jedesmal temporär den Dateinamen in eine Einrichtungstabelle speichern
- den aktuell gespeicherten Dateinamen im Dataport auslesen, wenn die RequestForm nicht geöffnet wurde

Ich hatte jetzt noch eine andere Idee, die auch funktioniert, aber, glaube ich, etwas unschöner ist:

- eine Schleife über die Dateien durchlaufen
- jedesmal temporär einen Filter mit dem aktuellen Dateinamen auf die Tabelle aus dem Dataport setzen
- den Filter im OnPreDataport abfragen, den Dateinamen setzen und den Filter wieder entfernen

Setzt natürlich voraus, dass man irgendein passendes Feld in der Tabelle hat, in diesem Fall gab es ohnehin ein Feld für den Dateinamen.