Cognus VB-DLLs in C# verwenden

axel2

Mitglied
Cognos VB-DLLs in C# verwenden

Hi!

Ich beziehe mich auf das Thema http://www.tutorials.de/forum/showthread.php?t=179636
Ich habe mittlerweile hinbekommen einen Verweis im VS auf eine bestehende TLB-Datei zu definieren. Nun habe ich in meinem Projekt im Projektmappen-Explorer diesen Verweis und somit ist dem Projekt die API von Cognos bekannt.

Nun versuche ich Objekte zu definieren, woran es noch ein wenig hapert.
Die API im Objektbrowser betrachtet liefert mir abstrakte Schnittstellen einerseits und Klassen auf der anderen Seite.

Nun kann ich zwar Variablen definieren, z.B.
PHP:
object objPPApp = new PwrPlay.ApplicationClass();
 
object objReports = new PwrPlay.ReportsClass();
Das Problem ist aber, dass diese dann nur die Methoden Equals(), GetHashCode(), GetType() und ToString() besitzen...

Wer kann mir diesbzgl. einen Tip geben?

Danke im Voraus :)
 
Zuletzt bearbeitet:
Ich kenn ja das Teil jetzt nicht, aber nur mal so geraten:

Code:
PwrPlay.ApplicationClass objPPApp = new PwrPlay.ApplicationClass();
PwrPlay.ReportsClass objReports = new PwrPlay.ReportsClass();
 
Re: Cognos VB-DLLs in C# verwenden

Momentan habe ich da stehen:
PHP:
PwrPlay.ApplicationClass objPPApp;
 
PwrPlay.ReportsClass objReports = new PwrPlay.ReportsClass();
 
objReports = objPPApp.Reports();
Da kringelt aber die dritte Zeile an (das hintere Reports) mit dem Hinweis, dass eine implizite Konvertierung von object zu PwrPlay.ReportsClass nicht möglich sei :confused:

Bin mich zur Zeit ein wenig in die Theorie hinter COM-Interop am einlesen...
 
Zuletzt bearbeitet:
Hi,

die 'objPPApp.Reports();' Methode gibt anscheinend ein 'object' zurueck. Du musst einfach nur casten:
Code:
objReports = (PwrPlay.ReportsClass)objPPApp.Reports();
Evtl. kannst du diesen Codeteil in einen try-catch Block setzen, um moegliche Casting-Exceptions abzufangen.
 
Und verabschiede Dich nicht gleich axel2, wenn Du jetzt erreichen kannst was Du vor hattest.
Ich will wissen was man mit Cognus so alles anstellen kann. Bzw. wollte ich mal ein praktisches Beispiel sehen. ;)
Danke Dir schon mal im voraus!
 
Das, was ich hier tue, hat nichts damit zu tun, was Cognos kann. Ich automatisiere nur unsere bestehenden Prozesse.

Die COM-Schnittstelle, über die ich die Cognos-Applikationen anspreche, ist eine generische Windows-Implementierung, sprich funktioniert mit allen möglichen Programmen, vom Office bis hin zu den unbekanntesten Fremdprodukten.

Wenn Du wissen willst, was man speziell mit Cognos umsetzen kann bzw. was Business Intelligence Analysen sind, dann lad Dir ne Demo-Version runter und teste es aus :rolleyes:
http://www.cognos.com/products/business_intelligence/analysis/try.html
 
Zuletzt bearbeitet:
Zur Zeit habe ich ein sehr rudimentäres Beispiel vorliegen und kämpfe damit, dass es auch läuft. Es soll lediglich eine Applikation starten, einen Bericht öffnen und wieder schliessen.

Ich bekomme bei einer Kompilierung die Meldung "Application ist ein mehrdeutiger Verweis", wahrscheinlich ein Namespace-Problem.
Um das beheben zu können, muss ich allerdings rausfinden, in welchem Namespace das "normale" Application-Objekt ist.

Weiss das evtl. jemand :)
 
Ich habe da jetzt stehen:

PHP:
private void btn_test_Click(object sender, System.EventArgs e)

{

String reppath = "G:\\mypath\\myreport.ppr";

try 

{

PwrPlay.ApplicationClass objPPApp = new PwrPlay.ApplicationClass();

PwrPlay.ReportsClass objReports = new PwrPlay.ReportsClass();

objReports = (PwrPlay.ReportsClass) objPPApp.Reports();

objReports.Application = objPPApp;

PwrPlay.ReportClass objPPRep = (PwrPlay.ReportClass) objReports.Add(reppath);

objPPRep.Visible = true;

objPPRep.Close();

}

catch {

MessageBox.Show("Exception");

}

}
Leider poppt nur die Exception-Meldung auf...
 
Zurück