Summenzeile

Was muss GetTotalLine in BusinessProcessBase zurückgeben wenn die Daten dynamisch in der temporäre Tabelle geschrieben werden?
Z.Z. gebe ich die rows einfach zurück
protected override Sagede.Shared.RealTimeData.Common.RowSet GetData(Sagede.Shared.RealTimeData.Common.RowSet rows){
return rows;
...
ist das ok?
 
Zuletzt bearbeitet:
Wenn Sie BusinessProcessBase ohne Summenzeile (Eigenschaft Summenzeile <> Ermittlung durch den Geschäftsprozess) verwenden, geben Sie eine neue Instanz von Row zurück.
 
Das mache ich schon
return new Sagede.Shared.RealTimeData.Common.Row();

In GetData(Sagede.Shared.RealTimeData.Common.RowSet rows) ist rows null. Muss ich selber aus der temp. Table lesen und vorbereiten?
Geschäftsprozess vor SQL-Abfrage ist ausgewählt
 
Ich gehe davon aus, dass der Geschäftsprozess die Temp-Tabelle füllt. Dann erstellen Sie die Datenquelle auf Basis der Temp-Tabelle und geben Rows zurück.
 
Das mache ich doch
protected override Sagede.Shared.RealTimeData.Common.RowSet GetData(Sagede.Shared.RealTimeData.Common.RowSet rows)
return rows;
}
Die Datenquelle ist auf Basis der Temp-Table erstellt und SQL-Where-Bedingung ist
tTMPTable.ConnID = $[Parameter(rpConnID)]
Der Tracelog zeigt dass ConnId NULL ist beim SELECT. In der Temp-Tabelle wird die richtige ConnID eingetragen nur der Report bzw. Geschäftsprozess/Datensatz
 
Zuletzt bearbeitet:
Sie müssen im Geschäftsprozess den Parameter erzeugen, setzen und zurückgegeben (CustomParameters der Basisklasse).
 
Wäre
CustomParameters.Add(new NamedParameter("ConnID", Enumerations.DataTypeSimple.Integer) { Value = Mandant.MultiUserServiceMain.ConnectionId.ToString() });

ok und enn ja wohin damit, GetData(... ?
 
GetData ist richtig. Wenn die Syntax stimmt, dann ist der zweite Teil auch richtig. Allerdings nennen Sie den Parameter in #5 rpConnID. Also die beiden Namen müssen übereinstimmen. Und der Wert ist der, den Sie im Geschäftsprozess in die Spalte ConnID eintragen, also Mandant.MultiUserServiceMain.ConnectionId.
 
Ich habe jetzt:
Bericht rptArtikelLieferanten
- Hauptdatenquelle = dtstHSMArtikelLieferanten
- Selektions-Element = selArtikelLieferanten

Datenquelle dtstHSMArtikelLieferanten
Table = tHSMArtikelLieferanten
SQL-Where-Bedingung = WHERE ConnID = $[Parameter(ConnID)]
Schlüsselfeld1 ConnID

Selektions-Element selArtikelLieferanten => Datenstruktur strArtikelLieferanten mit Felder ... ConnID ...
- Register Filter mit den Datenstrukturfelder Felder .... ConnID ...
ConnID ist erstmal sichtbar zum debugen.

In GetData:

NamedParameter np = new NamedParameter("ConnID", Enumerations.DataTypeSimple.Integer);
np.SetInt32(Mandant.MultiUserServiceMain.ConnectionId);
CustomParameters.Add(np);

Die temporäre Tabelle leere ich noch nicht wg. debugen.

Selectionsdialog ConnID ist 0 beim start. Wenn ich etwas eintrage (z.B. 21) wird mir nur ein Datensatz angezeigt obwohl in der Tabelle mehrere Datesätze mit ConnID = 21 vorhanden sind. Was mache ich falsch?
 
Ok, also auch ein Selektionselement.
Verwenden Sie ein Selektionselement und ordnen Sie das Element einem Bericht zu, dann stehen Ihnen die Datenstrukturfelder des Selektionselementes als NamedParameter zur Verfügung. Sie brauchen also im Code keinen neuen Parameter erstellen, sondern holen sich diesen aus der CutomParameter-Collection und setzen den Wert.
Wenn Sie den Druck vom Client aus testen wollen, dann dürfen Sie im Code den Parameter nicht setzen, da die ConnID vom Client nicht zwingend die gleiche wie auf Serverseite ist.
 
Vom Ergebnis her ist es egal, da Prepare vor GetData aufgerufen und der gesamte Geschäftsprozess vor dem Druck ausgeführt wird. Wir implementieren in GetData.
 
Zurück
Oben