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();