Laden...
T
ToDieFoR myCSharp.de - Member
Informatikstudent Gießen Dabei seit 02.05.2008 7 Beiträge
Benutzerbeschreibung

Forenbeiträge von ToDieFoR Ingesamt 7 Beiträge

14.08.2012 - 08:38 Uhr

Hallo liebe myCSharp User,

ich habe folgende Anforderung zu der ich ein paar Tips benötigen würde:

Ich habe ein Programm geschrieben, welches Messungen durchführt und die Messdaten und Ergebnisse in eine Datenbank einträgt. Jetzt möchte ich gerne über die Messungen einen Report mit Crystal Reports generieren.

Der Report hat ein paar Kopf-Daten. Das ist einfach. Kompliziert ist folgende Anforderung: Wenn ich in meinem Programm eine Messung starte kann ich auswählen wie viele Messgeräte gleichzeitig Daten messen sollen. Nun möchte ich in dem Report für jedes Messgerät, welches Daten gemessen hat, ein Chart auf dem Report haben, was ein Liniendiagramm darstellt.

D.h. ich habe eine flexible Anzahl von Charts, die in dem Report zur Laufzeit generiert werden müssen. Welche Möglichkeiten gibt es mit Crystal Reports dieses Problem zu lösen?

Vielen Dank für Eure Hilfe!
Grüße,
Björn

16.12.2011 - 15:11 Uhr

Hallo Bernd,

vielen Dank für deine Hilfe. Ich muss allerdings gestehen, dass es mir leider nicht weiter Hilft. Ich denke es ist eine Verständnisproblem meinerseits der Klassenstrukturen von .NET.

Wenn ich in meinem Report-Designer Zugriff auf Properties eines Objektes haben will mache ich bis jetzt folgendes:

  1. Meinem Projekt eine Datenquelle hinzufügen (das mache ich mit dem Menüpunkt "Neue Datenquelle hinzufügen". Dabei wähle ich als Quelle der Daten meine Klasse aus. In unserem Beispiel wäre das Company.

  2. Danach füge ich meinem Projekt einen Bericht hinzu.

  3. Wenn ich nun auf diesen Bericht eine Tabelle ziehe öffnet sich ein Dialog, der sagt dass ich ein DataSet auswählen soll. Ich gebe als Datenquelle nun mein Projektnamespace an und kann dann zwichen 2 verfügbaren DataSets auswählen, einmal Company und einmal Company(Workers).
    Das macht auch Sinn, da das DataSet Company meine Klasse Company represäntiert und das DataSet Company(Workers) die Liste von Personen, die in der Klasse Company existiert.

Dabei entsteht folgendes Problem:
Wenn ich als DataSet Company(Workers) auswähle, kann ich in meiner Tabelle auf die Daten der Workers zugreifen. Allerdings komme ich dann nicht an die Daten der Company-Klasse heran.

Wenn ich mich für das DataSet Company entscheide kann ich auf alle Daten der Klasse Company zugreifen, kann aber nicht auf die Daten der Workers zugreifen. (Ich versuche in einem Textfeld einen Ausdruck zu definieren und dabei wird bei Fields nicht die Property für die Workers angezeigt).

Mein Report soll allerdings aus Kopfdaten bestehen, die die Daten der Company-Klasse anzeigen und aus einer Tabelle, welche die Daten der zugehörigen Workers anzeigt.

Ist es nicht möglich in einem Report auf mehrere DataSets zuzugreifen? Oder muss man um dieses Problem zu erledigen IMMER einen Subreport machen?

Weiterhin ist der Begriff DataSet bei einer Bindingsource für mich komisch. Ich verstehe es so, dass bei der Klasse BindingSource die Property DataSet eine Datenquelle ist (die ein Objekt, oder eine Tabelle usw. sein kann).

Die Klasse DataSet ansich repräsentiert allerdings IMMER nur eine Tabelle aus einer Datenbank und kann ebenfalls als Datenquelle angelegt werden. Ist diese Sichtweise richtig? Oder habe ich da was flasch verstanden?

Aber wenn du Zeit und Lust hast komme ich dich mal am Wochenende besuchen, bringe ein oder zwei Flaschen Wein mit als Vergütungspauschale und wir schauen uns das zusammen an 😃.

Ich komme nämlich aus Gießen, was von Frankfurt a.M. nur ca. 60 Kilometer entfernt ist 😃

Grüße,
Björn

16.12.2011 - 12:39 Uhr

Hallo liebe Community,

ich habe folgendes Problem:

Ich möchte gerne mit dem ReportViewer einen Report erstellen, der als Datenquellen Buisness Objects (also eine von mir selbst erstellte Klasse) enthält.

Als Beispiel nehmen wir eine Klasse Company, die einen Namen hat und eine List mit Personen:


public class Person
{
  public string Name {get; set;}
  public int Age {get; set;}
}
public class Company
{
  public string Name {get; set}
  public List<Person> Workers {get; set;}
}

Es handelt sich also um Nested Objects. Ich habe Service Pack 1 von Visual Studio 2010 installiert, so dass es auch funktionieren müsste auf Nested Objects zuzugreifen.

Ich habe jetzt zu dem ganzen Thema folgendes Verständnisproblem:
Ich füge nun meinem Projekt eine neue Datenquelle aus der Klasse Company hinzu.

Wenn ich nun einen Report ohne Assistenten neu zum Projekt hinzufüge enthält dieser scheinbar noch keine Datenquelle. Sobald ich eine Tabelle auf den Report ziehe fragt er mich nach einem DataSet. Es existiert ein DataSet wo ich als Datenquelle Company oder Workers auswählen kann.

Ich kann aber im gleichen Report nicht auf beide Datenquellen (also Company und Workers) zugreifen.

Wie ist es möglich über den Designer mehrere Datenquellen zu erstellen bzw. auf alle Objekte dieser Datenquellen zuzugreifen, sodass ich zur Designzeit im Designer unter Felder alle Objekte sehe?

Wenn ich über reine Programmierung mehrere Datasets erstelle, so kennt diese der Designer nicht und ich kann nicht richtig darauf zugreifen.

Vielen Dank schonmal im Vorraus!

P.S.: Alle Tutorials die ich im Netz gefunden habe, die sich mit dem Erstellen von DataSets mit dem Designer beschäftigen sind nur über Erstellung eines DataSets aus einer Tabelle, aber nicht aus Business-Objekten ...

Grüße,
Björn

31.03.2011 - 22:38 Uhr

Hallo MarsStein,

ich habe mir diese beiden Artikel durchgelesen, allerdings haben sie mir bei meinem Problem leider nicht geholfen.

Aber vielleicht kennst du ja die Antwort auf meine Frage? 😄

31.03.2011 - 19:02 Uhr

Hallo Grumbler85,

danke für deine Hilfe! Bis ich mich jetzt allerdings in Fiddler eingearbeitet habe, gehen wieder 1-2 tage ins Land.

Hat noch niemand in diesem Forum eine SOAP-Nachricht an einen Webservice gesendet, die via HTTPS und SSL verschlüsselt sein soll?

Es muss mir doch jemand sagen können, ob die HttpWebRequest Klasse das alles automatisch macht. Wenn ja, was muss ich konfigurieren?

Wenn nein, wie wirds gemacht?

Danke für Eure Hilfe!

Grüße,
Björn

31.03.2011 - 16:12 Uhr

Hallo,

ich habe folgendes Problem:

Ich möchte gerne eine SOAP Nachricht per HTTPS (und SSL) von meinem Programm an einen Webservice senden. Bisher habe ich die SOAP-Nachricht nur mit HTTP gesendet und dafür die HttpWebRequest Klasse benutzt. Der Code dazu sieht wie folgt aus:


            byte[] byteArray = Encoding.UTF8.GetBytes(soapMsg);

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://myurl.de");                        

            request.Credentials = CredentialCache.DefaultCredentials;
            request.Headers.Add("SOAPAction", "");
            request.Method = "POST";
            request.ContentLength = byteArray.Length;
            request.ContentType = "application/soap+xml; charset=utf-8";

            using (Stream dataStream = request.GetRequestStream())
            {
                dataStream.Write(byteArray, 0, byteArray.Length);

                log.Debug("Sending soap message to eCM Webservice ... ");
            }
            WebResponse response = null;
            try
            {
                response = request.GetResponse();
            }
            catch (WebException)
            {
                throw new CreatingOutputException("Keine Antwort der eCM-Schnittstelle nach unserer SOAP-Anfrage bekommen!");
            }
            Console.WriteLine(((HttpWebResponse)response).StatusDescription);

            string responseFromServer = null;
            using (Stream dataStream = response.GetResponseStream())
            {
                StreamReader reader = new StreamReader(dataStream);
                responseFromServer = reader.ReadToEnd();

                log.Debug("eCM Webservice returned this response: \n\n" + responseFromServer + "\n\n");

                reader.Close();
                response.Close();
            }

Das hat auch prima funktioniert. Allerdings habe ich beim Versand über HTTPS ein paar Verständnisfragen:

  1. Die WebRequest-Klasse erstellt mir ja ein HttpWebRequest Objekt, wenn es sich bei der angegebenen URL um http:// oder https:// handelt.
    Ich schreibe die Daten dann über einen Stream raus und diese werden somit an den Webserver gesendet.
    Wenn ich jetzt Daten per HTTPS sende, muss ich die Daten vor dem Versenden erst noch verschlüsseln, oder übernimmt diese Aufgabe das HttpWebRequest Objekt?
    Ich habe bei der MSDN noch etwas über einen SslStream-Klasse gelesen.
    Ich hätte jetzt gedacht, dass ich einen SslStream erzeuge und diesen dann an das HttpWebRequest Objekt übergebe, aber ich habe dazu keine Möglichkeit gefunden.

  2. Wie läuft das technisch mit der Überprüfung des Zertifikates ab? Um den Server als gültig anzuerkennen muss ich doch das übermittelte Zertifikat prüfen. Kann ich in der HttpWebRequest Klasse dazu Einstellungen (z.B. anhand von Properties) vornehmen, die diese Prüfung für mich durchführen. Oder brauche ich ein Hilfsobjekt? Wie setzt man diese Prüfung programmatisch um?

Vielen Dank schon mal im Vorraus für jegliche Hilfe 😃

Liebe Grüße,
Björn

02.05.2008 - 14:56 Uhr

Hallo liebe Community,

Kann es sein, dass man in einer User-Control-Library keine WPF-Windows hinzufügen darf?

ich habe folgendes Problem: Ich habe als Projektform eine WPF-UserControl-Library erstellt (unter Visual Studio 2008). Die erstellte Usercontrol enthält eine WindowsFormsHost-Komponente, die eine externe PDF-Viewer-Komponente kapselt.
Das hat auch alles prima funktioniert. Kann diese Usercontrol in eine WPF-Applikation einbinden und alles funktioniert (d.h. die PDF-Datei wird korrekt in der UserControl angezeigt). Nun habe ich das Projekt um ein WPF-Window erweitert. Nachdem ich dieses WPF-Window aber hinzugefügt habe, wird die UserControl zwar noch normal angezeigt und funktioniert auch, allerdings ist die geladene PDF-Datei nicht mehr sichtbar und das WindowsFormsHost-Feld ist einfach nur grau.

Wie erstelle ich ein benutzerdefiniertes WPF-Window, was ich in der Usercontrol verwenden möchte?