Hallo,
Kurz zum Verständnis:
Wir programmieren an einer Warenwirtschaft. (Mit dem Gupta TeamDeveloper) Diese soll Reports aus CrystalReports dem Benutzer anzeigen. Da ein Integrieren des Crystal-Viewers in das eigendliche Programm nicht mehr möglich ist, soll diese komponente in ein eigenes .NET-Programm ausgegliedert werden. Dass heißt, dem neuen zu erstellenden Viewer wird der Report übergeben und ob er gedruckt oder angezeigt werden soll.
Dazu hab ich jetzt eine Testversion geschrieben, das einen Report öffnet und diesen in einem Fenster anzeigt.
Dabei hab ich festgestellt, dass das öffnen eines einzelnen Report ziemlich lange dauert, da erst die ganzen Bibliotheken von Crystal eingebunden werden müssen. Also hab ich mir gedacht, ich lass das Programm die ganze Zeit offen und die Warenwirtschaft kommuniziert über Sockets mit dem Viewer und sagt ihm, welcher Report angezeigt werden soll.
Ich stell mir das also so vor, dass mit dem Start der Warenwirtschaft auch der Viewer schon gestartet wird. Und wenn gedruckt oder angezeigt werden soll, dann übergibt die Warenwirtschaft die Informationen an den Viewer und dieser öffnet das Fenster zum Anzeigen oder Druckt den Report aus.
Beim Anzeigen haperts jetzt aber. Mir ist nämlich der Fall eingefallen, dass ja mehrere Benutzer über einen Terminalserver arbeiten könnten. Wenn jetzt meinem Viewer über die Socket gesagt wird, das er einen Report anzeigen soll, wie kann ich jetzt rausfinden, welchem Windows-Benutzer das Fenster angezeigt werden soll. Funktioniert das überhaupt? Oder muss ich pro Benutzer eine eigene Insatz des Viewers öffnen? Aber wie bekomm ich das dann mit den Ports hin? Die einzelnen Instanzen würden dann ja auf dem gleichen Port lauschen.
Vielleicht hat hier ja jemand eine Idee, oder hat schon ein änliches Problem gehabt.
Wäre für jeden Denkanstoß hilfreich.
Gruß Marco Westermann