7. April 2025

Aktualisierte Version von FastCube .NET 2025.2

In diesem Update haben wir uns darauf konzentriert, die Berechnungen zu beschleunigen, die Kompatibilität mit .NET 9 zu verbessern und die Änderungen verständlicher zu machen.

 


 

Umstellung auf invariante Mathematik. Bis zu 2 Mal schneller!

Eine der wichtigsten Verbesserungen ist der Verzicht auf den Typ „Variante“ zugunsten der invarianten Mathematik. Diese Änderung führt zu einer erheblichen Beschleunigung der Erstellung und Neuberechnung von Würfeln, in einigen Fällen um mehr als das Doppelte schneller!

Außerdem funktioniert der Würfel jetzt in verschiedenen Lokalisierungen korrekt, auch in nicht standardisierten Lokalisierungen (außer Latein), was seine Verwendung für internationale Benutzer erweitert.

 


 

Produktweise Verteilung von Änderungen

Änderungen nach Produkt aufteilen


FastCube .NET Updates sind nun produktweise (WinForms, Web, Mono und das gesamte FastCube .NET) verteilt. Dadurch wird der Update-Prozess transparenter. Sie sehen sofort, welche Änderungen die von Ihnen benötigte Version betreffen.

 


 

Behobener Fehler beim Lesen eines Streams aus einer komprimierten Datei 

Zuvor wurden komprimierte Dateien in einigen Fällen nicht korrekt verarbeitet, was dazu führen konnte, dass Daten falsch oder gar nicht geladen wurden.

Dieser Fehler wurde nun behoben und der Umgang mit komprimierten Dateien erfolgt vollständig korrekt. Dadurch erreichten wir:

  • korrektes Lesen von Daten aus Archivdateien.
  • einen stabileren Betrieb beim Herunterladen großer Dateien.
  • Vermeidung von Fehlern im Multithread-Modus, was besonders für Webanwendungen wichtig ist.

Wenn Ihr Projekt die Datenkomprimierung aktiv verwendet, empfehlen wir ein Upgrade auf Version 2025.2, um etwaige Probleme zu vermeiden.

 


 

Die Dateisignatur für den Würfel ist jetzt unveränderlich (const statt static)

Zuvor wurde die Dateisignatur als static deklariert, wodurch sie während der Programmausführung geändert werden konnte. In einigen Fällen kann dies zu Fehlern im Zusammenhang mit Datenstrukturänderungen oder sogar Dateibeschädigungen führen.

Änderungen in der neuen Version:

  • Die Signatur wird jetzt als  const bekanntgegeben, wodurch sie auf der Code-Ebene unveränderlich bleibt.
  • Die Integrität der Dateistruktur ist unabhängig von Änderungen im Programmcode gewährleistet.
  • Der Umgang mit Cube-Dateien ist in verschiedenen Umgebungen, einschließlich Web und Mono stabiler geworden.

Dies ist besonders wichtig für die Entwickler, die in Mehrbenutzer- und verteilten Systemen arbeiten.

 


 

Kompatibilität mit .NET 9

Kompatibilität mit .NET 9

 

Eine der wichtigsten Verbesserungen ist die Hinzufügung der .NET 9-Unterstützung. FastCube .NET ist jetzt vollständig mit der neuesten Version der Plattform kompatibel, so dass Sie die Vorteile der neuen Funktionen und Erweiterungen von Microsoft nutzen können. Dies ist ein wichtiges Update für die Entwickler, die auf .NET 9 umstellen oder planen, es in ihren Projekten zu verwenden. 

Wir möchten gesondert darauf hinweisen, dass die Unterstützung neuer Versionen die Stabilität des Produkts und die Integration mit den neuesten Technologien gewährleistet.

 


 

Aktualisierung der unterstützten Versionen von .NET

Als Hauptversion gilt nun die .NET 8, die den aktuellen Standard für die meisten Unternehmensprojekte entspricht. Die .NET 6-Unterstützung wurde jedoch beibehalten, da es sich hierbei um eine Langzeitversion mit erweiterter Unterstützung handelt. 

Darüber hinaus wurde, wie bereits erwähnt, die .NET 9-Unterstützung hinzugefügt, sodass Sie bei der Auswahl der Plattform für die Arbeit mit FastCube .NET flexibel sind, egal ob Sie Stabilität (in .NET 6) oder die neuesten Funktionen und Leistungsverbesserungen (.NET 9) wünschen.

 


 

Korrekturen und Verbesserungen im Demobeispiel 

Korrekturen und Verbesserungen im Demobeispiel


Im Demobeispiel für das boolean Format wurde ein Fehler behoben, durch den die korrekte Anzeige der Daten beeinträchtigt wurde. Dieses Format funktioniert nun korrekt und verursacht keine Fehler, was die Arbeit mit den Demobeispielen für die Benutzer erleichtert.

Im Demowürfel "Sales by months" wurden früher die Titel falsch angezeigt. Jetzt wurde dieser Fehler behoben und die Feldnamen werden korrekt angezeigt, was die Genauigkeit und die Benutzerfreundlichkeit beim Umgang mit Daten gewährleistet.

 


 

Verbesserte Datenserialisierung 

Eine der wichtigsten Verbesserungen ist die Optimierung des Datenserialisierungsprozesses. Es wurden neue Methoden hinzugefügt und Eigenschaften festgelegt, so dass Standardwerte nun seltener serialisiert werden. 

Durch die Verringerung der Menge der serialisierten Daten wird das System beim Speichern und Laden von Informationen entlastet. Außerdem erhöhen diese Änderungen die Leistung, was sich besonders bei der Bearbeitung von großen Datenmengen bemerkbar macht.

 


 

Lister der Änderungen


FastCube .NET WinForms

[Common]
- Ein Fehler wurde behoben, bei dem der Stream aus einer komprimierten Datei falsch gelesen wurde;
* Die Dateisignatur für den Würfel hat jetzt einen konstanten Modifikator (const) anstelle eines statischen (static) und kann nicht geändert werden;


FastCube .NET Web

[Common]
- Ein Fehler wurde behoben, bei dem der Stream aus einer komprimierten Datei falsch gelesen wurde;
* Die Dateisignatur für den Würfel hat jetzt einen konstanten Modifikator (const) anstelle eines statischen (static) und kann nicht geändert werden;


FastCube .NET Mono

[Common]
- Ein Fehler wurde behoben, bei dem der Stream aus einer komprimierten Datei falsch gelesen wurde;
* Die Dateisignatur für den Würfel hat jetzt einen konstanten Modifikator (const) anstelle eines statischen (static) und kann nicht geändert werden;


FastCube .NET

[Common]
+ Die Kompatibilität mit .NET 9 wurde hinzugefügt;
+ .NET-Versionen wurden aktualisiert, wobei die Hauptversion jetzt .NET 8 ist und Zielplattformen wie .NET 6, .NET 8 und .NET 9 unterstützt werden;
* Einige Eigenschaften wurden im WinForms-Editor vor dem Benutzer verborgen;
* Der Typ „Variante“ wurde durch Variantenmathematik ersetzt;
* Die Serialisierung wurde verbessert, Methoden wurden hinzugefügt und Eigenschaften wurden so eingestellt, dass Standardwerte seltener serialisiert werden;
- Die Anzeige des Feldnamens wurde im Demowürfel "Sales by months" korrigiert;
- Ein Fehler wurde im Demobeispiel für Boolesches Format behoben.

 


 

Weitere kritische Änderungen 


Allgemeine Änderungen für FastCube Web, FastCube WinForms und FastCube Mono

Lagecy-Delegate wurden durch kompatible ersetzt, da der Variant entfernt wurde und nun stattdessen Boxing durch Object verwendet wird:

Klicken Sie hier, um zu erweitern

 

  • FastReport.Olap.Slice.Value2Delegate(System.Int32, System.Int32, FastReport.Olap.Utils.Variant, FastReport.Olap.Utils.Variant, System.Int32)
  • FastReport.Olap.Slice.ValueDelegate(System.Int32, System.Int32, FastReport.Olap.Utils.Variant, System.Int32)
  • FastReport.Olap.Slice.SliceChartDataHandler(FastReport.Olap.Slice.Slice, FastReport.Olap.Slice.ChartParams, System.String[], System.String[], FastReport.Olap.Utils.Variant[], System.Int32)

 


Veraltete Felder. Die folgenden Felder wurden durch die entsprechenden Eigenschaften ersetzt

Klicken Sie hier, um zu erweitern

 

  • FastReport.Olap.Types.BoolValue -> public System.Boolean Value
  • FastReport.Olap.Types.ByteValue -> public System.Byte Value
  • FastReport.Olap.Types.DateTimeValue -> public System.DateTime Value
  • FastReport.Olap.Types.DecimalValue -> public System.Decimal Value
  • FastReport.Olap.Types.DoubleValue -> public System.Double Value
  • FastReport.Olap.Types.FloatValue -> public System.Single Value
  • FastReport.Olap.Types.IntValue -> public System.Int32 Value
  • FastReport.Olap.Types.LongValue -> public System.Int64 Value
  • FastReport.Olap.Types.SByteValue -> public System.SByte Value
  • FastReport.Olap.Types.ShortValue -> public System.Int16 Value
  • FastReport.Olap.Types.StringValue -> public System.String Value
  • FastReport.Olap.Types.TimeSpanValue -> public System.TimeSpan Value
  • FastReport.Olap.Types.UIntValue -> public System.UInt32 Value
  • FastReport.Olap.Types.ULongValue -> public System.UInt64 Value
  • FastReport.Olap.Types.UShortValue -> public System.UInt16 Value
  • FastReport.Olap.Slice.MeasureCell -> public FastReport.Olap.Utils.Variant Value

 


Veraltete Methoden wurden durch kompatible Methoden ersetzt, aber anstelle des Typs Variant wird nun Data Boxing durch Object verwendet, wodurch Sie nicht Werte mit Speicherkopien, sondern einen Link auf ein Objekt übergeben können.

Klicken Sie hier, um zu erweitern

 

  • FastReport.Olap.Types.BoolDTP -> public FastReport.Olap.Types.BoolValue VariantToValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Types.ByteDTP -> public FastReport.Olap.Types.ByteValue VariantToValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Types.CommonDataTypeProcessor``2<T, T2> -> public System.Int32 AddNewVariantValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Types.CommonDataTypeProcessor``2<T, T2> -> public T VariantToValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Types.DateTimeDTP -> public FastReport.Olap.Types.DateTimeValue VariantToValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Types.DecimalDTP -> public FastReport.Olap.Types.DecimalValue VariantToValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Types.DoubleDTP -> public FastReport.Olap.Types.DoubleValue VariantToValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Types.FloatDTP -> public FastReport.Olap.Types.FloatValue VariantToValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Types.IntDTP -> public FastReport.Olap.Types.IntValue VariantToValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Types.LongDTP -> public FastReport.Olap.Types.LongValue VariantToValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Types.Range -> public System.Boolean Match(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Types.Ranges -> public System.Boolean Match(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Types.SByteDTP -> public FastReport.Olap.Types.SByteValue VariantToValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Types.ShortDTP -> public FastReport.Olap.Types.ShortValue VariantToValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Types.StringDTP -> public FastReport.Olap.Types.StringValue VariantToValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Types.TimeSpanDTP -> public FastReport.Olap.Types.TimeSpanValue VariantToValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Types.UIntDTP -> public FastReport.Olap.Types.UIntValue VariantToValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Types.ULongDTP -> public FastReport.Olap.Types.ULongValue VariantToValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Types.UShortDTP -> public FastReport.Olap.Types.UShortValue VariantToValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Slice.AxisContainer -> public FastReport.Olap.Utils.Variant GetValue(System.Int32, System.Int32)
  • FastReport.Olap.Slice.MeasuresContainer -> public FastReport.Olap.Utils.Variant GetMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)
  • FastReport.Olap.Slice.MeasuresContainer -> public FastReport.Olap.Utils.Variant GetSecondAdditionalTotalMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)
  • FastReport.Olap.Slice.Slice -> public System.Object Calc(FastReport.Olap.Types.Expression, FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Slice.Slice -> public FastReport.Olap.Utils.Variant CalcFuncForSelectedArea(FastReport.Olap.Types.AggregateFunction, FastReport.Olap.Types.Selection)
  • FastReport.Olap.Slice.Slice -> public FastReport.Olap.Utils.Variant GetMeasureValue(System.Int32, System.Int32)
  • FastReport.Olap.Slice.SliceField -> public FastReport.Olap.Utils.Variant GetUniqueValue(System.Int32)
  • FastReport.Olap.Slice.SliceField -> public FastReport.Olap.Utils.Variant GetUniqueValueFromRecord(System.Int32)
  • FastReport.Olap.Slice.SliceField -> public System.Int32 GetUniqueValueIdAndVariantFromRecord(System.Int32, FastReport.Olap.Utils.Variant&)
  • FastReport.Olap.Slice.UniqueValuesFieldFilter -> public System.Void SetAllowedUniqueValueByValue(FastReport.Olap.Utils.Variant, System.Boolean)
  • FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValueByAppend(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 GetValueIdAtValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.CommonUniqueValues -> public FastReport.Olap.Utils.Variant GetVariantByOrder(System.Int32)
  • FastReport.Olap.Cube.CommonUniqueValues -> public FastReport.Olap.Utils.Variant GetVariantByValueId(System.Int32)
  • FastReport.Olap.Cube.Cube -> public FastReport.Olap.Utils.Variant GetSourceValue(System.Int32, System.Int32)
  • FastReport.Olap.Cube.Cube -> public FastReport.Olap.Utils.Variant GetSourceValue(System.Int32, FastReport.Olap.Cube.CubeField)
  • FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, System.Int32, FastReport.Olap.Utils.Variant&)
  • FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, FastReport.Olap.Cube.CubeField, FastReport.Olap.Utils.Variant&)
  • FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(System.Int32, FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(FastReport.Olap.Cube.CubeField, FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(System.Int32, FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(FastReport.Olap.Cube.CubeField, FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.DatePartUniqueValues -> public System.DateTime GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.DayOfWeekPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.DayOfYearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.DayPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.HalfYearPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.HourPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.MillisecondPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.MinutePartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.MonthPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.QuarterPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.SecondPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.TimePartUniqueValues -> public System.TimeSpan GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValueFromParentValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValueFromParentValueByAppend(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public T2 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 GetValueIdAtValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public FastReport.Olap.Utils.Variant GetVariantByOrder(System.Int32)
  • FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public FastReport.Olap.Utils.Variant GetVariantByValueId(System.Int32)
  • FastReport.Olap.Cube.WeekNumberPartUniqueValues -> public System.Byte GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.YearMonthPartUniqueValues -> public System.Int32 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Cube.YearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColOffsetTotalValueForDims(System.Int32, System.String)
  • FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColOffsetValue(System.Int32)
  • FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColOffsetValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColRowOffsetValue(System.Int32, System.Int32)
  • FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetColRowOffsetWithLevelValue(System.Int32, System.Int32, System.Int32, System.Int32)
  • FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetRowOffsetTotalValueForDims(System.Int32, System.String)
  • FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetRowOffsetValue(System.Int32)
  • FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetRowOffsetValue(FastReport.Olap.Utils.Variant)
  • FastReport.Olap.Code.Measure -> public FastReport.Olap.Utils.Variant GetTotalValueForDims(System.String)
  • FastReport.Olap.Code.Measures -> public FastReport.Olap.Utils.Variant GetDetailValue(System.Int32, System.String)

 


Veraltete Eigenschaften. Die folgenden Eigenschaften wurden so geändert, dass nun Boxing anstelle des Typs Variant verwendet wird:

Klicken Sie hier, um zu erweitern

 

  • FastReport.Olap.Types.BoolValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
  • FastReport.Olap.Types.ByteValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
  • FastReport.Olap.Types.DateTimeValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
  • FastReport.Olap.Types.DecimalValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
  • FastReport.Olap.Types.DoubleValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
  • FastReport.Olap.Types.FloatValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
  • FastReport.Olap.Types.IntValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
  • FastReport.Olap.Types.LongValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
  • FastReport.Olap.Types.Range -> FastReport.Olap.Utils.Variant HighRange { public get; public set; }
  • FastReport.Olap.Types.Range -> FastReport.Olap.Utils.Variant LowRange { public get; public set; }
  • FastReport.Olap.Types.SByteValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
  • FastReport.Olap.Types.ShortValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
  • FastReport.Olap.Types.StringValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
  • FastReport.Olap.Types.TimeSpanValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
  • FastReport.Olap.Types.UIntValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
  • FastReport.Olap.Types.ULongValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
  • FastReport.Olap.Types.UShortValue -> FastReport.Olap.Utils.Variant Variant { public get; public set; }
  • FastReport.Olap.Slice.CalculateMeasureEventArgs -> FastReport.Olap.Utils.Variant Data { public get; public set; }
  • FastReport.Olap.Slice.CalculateValueEventArgs -> FastReport.Olap.Utils.Variant Value { public get; public set; }
  • FastReport.Olap.Slice.SliceField -> FastReport.Olap.Utils.Variant CurrentValue { public get; }
  • FastReport.Olap.Code.ContainerFieldItem -> FastReport.Olap.Utils.Variant CurrentValue { public get; }
  • FastReport.Olap.Code.Dimension -> FastReport.Olap.Utils.Variant CurrentValue { public get; }
  • FastReport.Olap.Code.Dimensions -> FastReport.Olap.Utils.Variant DetailValue { public get; }
  • FastReport.Olap.Code.Measure -> FastReport.Olap.Utils.Variant CurrentValue { public get; }

 


Veraltete Typen. Die folgenden Typen sind veraltet und wurden vollständig entfernt, da sie nicht mehr verwendet werden.

  • FastReport.Olap.Utils.Variant
  • FastReport.Olap.Types.IVariantable
  • FastReport.Olap.Types.UnAssigned

 


Die neuen Delegate ersetzen die alten, die den Typ Variant verwenden.

  • FastReport.Olap.Slice.Value2Delegate(System.Int32, System.Int32, System.Object, System.Object, System.Int32)
  • FastReport.Olap.Slice.ValueDelegate(System.Int32, System.Int32, System.Object, System.Int32)
  • FastReport.Olap.Slice.SliceChartDataHandler(FastReport.Olap.Slice.Slice, FastReport.Olap.Slice.ChartParams, System.String[], System.String[], System.Object[], System.Int32)

 


Das neue Feld hat die bestehenden ersetzt, jetzt wird anstelle des Typs Variant das Boxing durch Object verwendet.

  • FastReport.Olap.Slice.MeasureCell -> public System.Object Value

 


Die neuen Methoden haben die alten Methoden ersetzt, die den Typ Variant verwendet haben. Jetzt wird stattdessen Boxing verwendet und die Datenübertragung erfolgt per Link statt per Wert, was die Geschwindigkeit deutlich erhöht.

Klicken Sie hier, um zu erweitern

 

  • FastReport.Olap.Types.Range -> public System.Boolean Match(System.Object)
  • FastReport.Olap.Types.Ranges -> public System.Boolean Match(System.Object)
  • FastReport.Olap.Slice.AxisContainer -> public System.Object GetValue(System.Int32, System.Int32)
  • FastReport.Olap.Slice.MeasuresContainer -> public System.Object GetMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)
  • FastReport.Olap.Slice.MeasuresContainer -> public System.Object GetSecondAdditionalTotalMeasureValue(System.Int32, System.Int32, System.Int32, System.Int32, System.Int32, System.Int32)
  • FastReport.Olap.Slice.Slice -> public System.Object Calc(FastReport.Olap.Types.Expression, System.Object)
  • FastReport.Olap.Slice.Slice -> public System.Object CalcFuncForSelectedArea(FastReport.Olap.Types.AggregateFunction, FastReport.Olap.Types.Selection)
  • FastReport.Olap.Slice.Slice -> public System.Object GetMeasureValue(System.Int32, System.Int32)
  • FastReport.Olap.Slice.SliceField -> public System.Object GetUniqueValue(System.Int32)
  • FastReport.Olap.Slice.SliceField -> public System.Object GetUniqueValueFromRecord(System.Int32)
  • FastReport.Olap.Slice.SliceField -> public System.Int32 GetUniqueValueIdAndVariantFromRecord(System.Int32, System.Object&)
  • FastReport.Olap.Slice.UniqueValuesFieldFilter -> public System.Void SetAllowedUniqueValueByValue(System.Object, System.Boolean)
  • FastReport.Olap.Cube.BaseDataReaderDataSet -> public System.Object GetValue(System.Int32)
  • FastReport.Olap.Cube.BaseDataSet -> public System.Object GetValue(System.Int32)
  • FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValue(System.Object)
  • FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValue(System.Object)
  • FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 AddNewVariantValueFromParentValueByAppend(System.Object)
  • FastReport.Olap.Cube.CommonUniqueValues -> public System.Int32 GetValueIdAtValue(System.Object)
  • FastReport.Olap.Cube.CommonUniqueValues -> public System.Object GetVariantByOrder(System.Int32)
  • FastReport.Olap.Cube.CommonUniqueValues -> public System.Object GetVariantByValueId(System.Int32)
  • FastReport.Olap.Cube.Cube -> public System.Object GetSourceValue(System.Int32, System.Int32)
  • FastReport.Olap.Cube.Cube -> public System.Object GetSourceValue(System.Int32, FastReport.Olap.Cube.CubeField)
  • FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, System.Int32, System.Object&)
  • FastReport.Olap.Cube.Cube -> public System.Int32 GetSourceValueIdAndVariant(System.Int32, FastReport.Olap.Cube.CubeField, System.Object&)
  • FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(System.Int32, System.Object)
  • FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean AddUniqueValue(FastReport.Olap.Cube.CubeField, System.Object)
  • FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(System.Int32, System.Object)
  • FastReport.Olap.Cube.CubeManualLoadEventArgs -> public System.Boolean SetFieldValue(FastReport.Olap.Cube.CubeField, System.Object)
  • FastReport.Olap.Cube.DatePartUniqueValues -> public System.DateTime GetChildValueFromParentValue(System.Object)
  • FastReport.Olap.Cube.DayOfWeekPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object)
  • FastReport.Olap.Cube.DayOfYearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(System.Object)
  • FastReport.Olap.Cube.DayPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object)
  • FastReport.Olap.Cube.HalfYearPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object)
  • FastReport.Olap.Cube.HourPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object)
  • FastReport.Olap.Cube.IBaseDataSet -> public System.Object GetValue(System.Int32)
  • FastReport.Olap.Cube.MillisecondPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(System.Object)
  • FastReport.Olap.Cube.MinutePartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object)
  • FastReport.Olap.Cube.MonthPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object)
  • FastReport.Olap.Cube.QuarterPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object)
  • FastReport.Olap.Cube.SecondPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object)
  • FastReport.Olap.Cube.TimePartUniqueValues -> public System.TimeSpan GetChildValueFromParentValue(System.Object)
  • FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 GetValueIdAtValue(System.Object)
  • FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValue(System.Object)
  • FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValueFromParentValue(System.Object)
  • FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Int32 AddNewVariantValueFromParentValueByAppend(System.Object)
  • FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public T2 GetChildValueFromParentValue(System.Object)
  • FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Object GetVariantByOrder(System.Int32)
  • FastReport.Olap.Cube.UniqueValues``2<T, T2> -> public System.Object GetVariantByValueId(System.Int32)
  • FastReport.Olap.Cube.WeekNumberPartUniqueValues -> public System.Byte GetChildValueFromParentValue(System.Object)
  • FastReport.Olap.Cube.YearMonthPartUniqueValues -> public System.Int32 GetChildValueFromParentValue(System.Object)
  • FastReport.Olap.Cube.YearPartUniqueValues -> public System.Int16 GetChildValueFromParentValue(System.Object)
  • FastReport.Olap.Code.Measure -> public System.Object GetColOffsetTotalValueForDims(System.Int32, System.String)
  • FastReport.Olap.Code.Measure -> public System.Object GetColOffsetValue(System.Int32)
  • FastReport.Olap.Code.Measure -> public System.Object GetColOffsetValue(System.Object)
  • FastReport.Olap.Code.Measure -> public System.Object GetColRowOffsetValue(System.Int32, System.Int32)
  • FastReport.Olap.Code.Measure -> public System.Object GetColRowOffsetWithLevelValue(System.Int32, System.Int32, System.Int32, System.Int32)
  • FastReport.Olap.Code.Measure -> public System.Object GetRowOffsetTotalValueForDims(System.Int32, System.String)
  • FastReport.Olap.Code.Measure -> public System.Object GetRowOffsetValue(System.Int32)
  • FastReport.Olap.Code.Measure -> public System.Object GetRowOffsetValue(System.Object)
  • FastReport.Olap.Code.Measure -> public System.Object GetTotalValueForDims(System.String)
  • FastReport.Olap.Code.Measures -> public System.Object GetDetailValue(System.Int32, System.String)

 


Neue Eigenschaften haben die veralteten Eigenschaften ersetzt bzw. ergänzt:

Klicken Sie hier, um zu erweitern

 

  • FastReport.Olap.Types.BoolValue -> System.Boolean Value { public get; public set; }
  • FastReport.Olap.Types.ByteValue -> System.Byte Value { public get; public set; }
  • FastReport.Olap.Types.DateTimeValue -> System.DateTime Value { public get; public set; }
  • FastReport.Olap.Types.DecimalValue -> System.Decimal Value { public get; public set; }
  • FastReport.Olap.Types.DoubleValue -> System.Double Value { public get; public set; }
  • FastReport.Olap.Types.FloatValue -> System.Single Value { public get; public set; }
  • FastReport.Olap.Types.IntValue -> System.Int32 Value { public get; public set; }
  • FastReport.Olap.Types.LongValue -> System.Int64 Value { public get; public set; }
  • FastReport.Olap.Types.Range -> System.Object HighRange { public get; public set; }
  • FastReport.Olap.Types.Range -> System.Object LowRange { public get; public set; }
  • FastReport.Olap.Types.SByteValue -> System.SByte Value { public get; public set; }
  • FastReport.Olap.Types.ShortValue -> System.Int16 Value { public get; public set; }
  • FastReport.Olap.Types.StringValue -> System.String Value { public get; public set; }
  • FastReport.Olap.Types.TimeSpanValue -> System.TimeSpan Value { public get; public set; }
  • FastReport.Olap.Types.UIntValue -> System.UInt32 Value { public get; public set; }
  • FastReport.Olap.Types.ULongValue -> System.UInt64 Value { public get; public set; }
  • FastReport.Olap.Types.UShortValue -> System.UInt16 Value { public get; public set; }
  • FastReport.Olap.Slice.CalculateMeasureEventArgs -> System.Object Data { public get; public set; }
  • FastReport.Olap.Slice.CalculateValueEventArgs -> System.Object Value { public get; public set; }
  • FastReport.Olap.Slice.SliceField -> System.Object CurrentValue { public get; }
  • FastReport.Olap.Format.CustomFormat -> System.String DefaultFormatValue { public get; public set; }
  • FastReport.Olap.Code.ContainerFieldItem -> System.Object CurrentValue { public get; }
  • FastReport.Olap.Code.Dimension -> System.Object CurrentValue { public get; }
  • FastReport.Olap.Code.Dimensions -> System.Object DetailValue { public get; }
  • FastReport.Olap.Code.Measure -> System.Object CurrentValue { public get; }

 


Neue Typen:

  • FastReport.Olap.Utils.VMath hat den Typ Variant ersetzt, jetzt werden die Berechnungen durch invariante Berechnungen unter Verwendung von Boxing und Typkonvertierung durchgeführt.
  • FastReport.Olap.Types.IValueStruct``1<T> ist eine Schnittstelle zur Implementierung eines eigenen Boxing-Typs.
  • FastReport.Olap.Types.SimpleCompareAction ist eine Aufzählung für invariante mathematische Aktionstypen.

 

Änderungen für FastCube WinForms und FastCube Mono

Das veraltete Feld wurde durch ein technisch kompatibles Feld ersetzt.

  • FastReport.Olap.Controls.SizingInfo -> public FastReport.Olap.Utils.Variant Data


Neues Feld:

  • FastReport.Olap.Controls.SizingInfo -> public System.Int32 Data

 

14. April 2025

50 % Rabatt auf die Verlängerung der FastReport Single-Lizenz – nur bis zum 30. April!

Gute Neuigkeiten für Inhaber einer FastReport VCL- oder FastReport .NET- Single-Lizenz! Nur bis zum 30. April können Sie Ihre Lizenz mit einem starken 50 % Rabatt verlängern.
8. April 2025

Aktualisierung von .NET-Produkten auf Version 2025.2

In Version 2025.2 erschien: .NET 9, das FastScript library.NET , ein Import-Plugin aus Word, ein Konnektor zu Apache Ignite, Verbesserungen am Designer und Exporten, neue Funktionen im WebReport.
7. April 2025

Veröffentlichung von FastReport Business Graphics .NET 2025.2

Wenn Sie planen, auf .NET9 zu portieren oder es bereits in Ihren Projekten verwenden, können Sie sicher sein, dass unsere Komponenten ohne zusätzliche Änderungen einsatzbereit sind!
Fast Reports
  • 800-985-8986 (Englisch, USA)
  • +31 97 01025-8466 (Englisch, EU)
  • +49 30 56837-3928 (Deutsch, DE)
  • +55 19 98147-8148 (Portugiesisch, BR)
  • info@fast-report.com
  • 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314

© 1998-2025 Fast Reports Inc.