+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

LL14 Report nur mit Variablen C#


(Guest) #1

Ich glaube, das Thema wurde schon in einem anderen
Thread angesprochen,
aber ich möchte einen Report nur mit Variablen haben.

Mein Code unten führt dazu, das ich beim Drucken und beim
Preview bei LL.Print nur eine Sanduhr sehe und sonst nichts
passiert, der Preview bleibt grau.

Gruß Sven

Ich habe folgendes gemacht:

LL.DataSource = null;
LL.DataMember = string.Empty;
LL.NoNoTableCheck = true;
LL.AutoProjectType = LlProject.List | LlProject.FileAlsoNew;
LL.AutoMasterMode = LlAutoMasterMode.AsVariables;

LL.Print();

Zudem gibt es einen Event, wo die Variablen gefüllt werden, da springt
er auch rein.

private void LL_DefineVariables(object sender, DefineElementsEventArgs e)
{
if (_floorPlan != null)
{
LL.Variables.Add(“Text1”, _floorPlan.Text1);


(Guest) #2

Mal versicht anstelle von “LlProject.List” eben “LlProject.Card” zu verwenden. Denn wenn eine Liste erstellt werden soll, werden auch Felder erwartet. Aber in diesem Falle sind ja nur Variablen verfügbar. Daher dann auch ein Card-Projekt. Vielleicht hilft das ja schon?


(Guest) #3

Vielen Dank erstmal für den Tip, hat aber nicht geklappt.
Wenn ich beim Drucken der Card auf Preview gehe, dann geht der Seitenzähler
ohne Ende nach oben, als wenn er Millionen von Seiten drucken will,
obwohl ja keine Daten da sind.

Der Code:

LL.DataSource = null;
LL.DataMember = string.Empty;
LL.NoNoTableCheck = true;
LL.AutoProjectType = LlProject.Card| LlProject.FileAlsoNew;
LL.AutoMasterMode = LlAutoMasterMode.AsVariables; // “None” hat denselben Effekt

LL.Print(LlProject.Card, projectFile);


(Guest) #4

Was mir aber noch aufgefallen ist, dass das Databinding explizit deakiviert wird (.DataSource = null;). Die “einfachen” Druck- und Design-Methoden sind aber für das Databinding bestimmt. Und da keine Datenquelle angegeben wird… Also entweder die Daten in ein DataSet oder ähnliches packen und via .DataSource anmelden oder eine eigene Druckschleife (LlPrintWithBoxStart, LlPrintEnd etc.) implementierten.


(Guest) #5

Vielen Dank erstmal für den Tip !!!,
es scheint jetzt zu funktionieren.

Ich habe den Beispielcode aus
C:\Programme\combit\LL15\Programmable Samples and Declarations\Microsoft .NET\c#unicode
Doch zuvor habe ich erstmal auf LL15 aktualisiert.
Was daran besser sein soll, kann man nirgends finden (???), aber
das steht auf einem anderen Papier.
Damit der Report funktioniert, mußte ich in die Liste eine Tabelle
einfügen, die eigentlich nichts ausgibt, sonst gibt es den
Fehler “The project does not contain any table/report container object.”
Dann darf ich nur die Variablen hinzufügen “LL.Variables.Add” aber als
Felder nicht (Funktion DefineData)

Also in Kürze:

LL.Core.LlSelectFileDlgTitleEx(Handle, “Choose report file”, LlProject.List, ref FileName);

DefineData(false);

LL.Core.LlPrintWithBoxStart(LlProject.List, FileName, LlPrintMode.Preview, LlBoxType.StandardAbort, Handle, “Printing report…”);

usw. den Rest kann man im Beispielcode nachlesen, aber alles mit dem DataReader
entfernen.

Gruß Sven


(Guest) #6

Da gibt es ansonsten auch ein Kapitel im .NET-Tutorial zu - den Link hatte ich gestern in einen anderen Thread geschickt, ansonsten einfach mal in der Knowledgebase gucken. Da ist genau der Fall mit der Karteikarte beschrieben, es geht auch ohne die Core-Methoden.