Projektdateien in Datenbank halten

Projektdateien können auch direkt in Datenbanken gespeichert werden. Neben der Möglichkeit, diese direkt aus der Datenbank zu entpacken und im lokalen Dateisystem zu speichern kann diese Arbeit auch auf List & Label abgewälzt werden. Die Print- und Design-Methoden haben Überladungen, die die direkte Angabe eines Streams erlauben.

Bei Verwendung dieser Überladungen sind einige wichtige Verhaltensänderungen zu beachten. Hintergrund für diese ist das Fehlen eines lokalen Dateikontextes und damit verbunden die fehlende Möglichkeit, neue Dateien anzulegen:

  Im Designer ist es nicht möglich, ein neues Projekt anzulegen

  Die Menüpunkte Datei > Speichern unter und Datei > Öffnen sind nicht verfügbar

  Die Projektbaustein-Funktionalität ist deaktiviert

  Drilldown ist nicht verfügbar

  Die Designerfunktion "ProjectPath$" ist nicht verfügbar

Für den Designfall kann es natürlich passieren, dass der übergebene Stream modifiziert wird. In diesem Fall müssen Sie nach Ende des Designs den aktualisierten Stream in die Datenbank schreiben.

Eine elegantere Vorgehensweise - ohne Einschränkungen im Designer - ist die Verwendung des Repository (virtuelles Dateisystem). Der prinzipielle Aufbau und Verweise auf Beispielimplementierungen finden sich im Kapitel Repository-Modus für verteilte (Web-)Anwendungen.

ListLabel LL = new ListLabel();
LL.DataSource = CreateDataSet();

byte[] report = GetReportFromDatabase();

MemoryStream memStream = new MemoryStream(report);

 

LL.Print(LlProject.List, memStream);

LL.Dispose();