DataMatrix- Code generieren pro Seite

Hallo Christoph,

wir haben mal Folgendes als Beispiel zusammengestellt:

Für jede Seite wird eine ContentsPrinted-Variable mit der Liste der Firmennamen gefüllt, die auf dieser Seite gedruckt werden sollen:

Der Code dazu sieht so aus:

List<string> _passedFields = new List<string>();
string _lastCompany = null;
int? _expectedNumberOfRecords = null;
int _actualNumberOfRecords = 0;

using (LL)
{
    LL.Variables.Add("ContentsPrinted", "");
    LL.AutoDefineField += (s, ea) =>
    {
        if (!ea.IsDesignMode)
        {
            if (!_expectedNumberOfRecords.HasValue)
            {
                _expectedNumberOfRecords = ((s as ListLabel).DataSource as IDataProvider).GetTable(ea.AssociatedTableRow.TableName).Count;
            }
            if (ea.Name == "Customers.CompanyName")
            {
                _actualNumberOfRecords++;
                if (_lastCompany != null)
                {
                    _passedFields.Add(_lastCompany);
                }
                string content = ((ea.Value == System.DBNull.Value) ? "(null)" : (string)ea.Value);
                _lastCompany = content;
                if (_actualNumberOfRecords == _expectedNumberOfRecords)
                {
                    _passedFields.Add(content);
                }
            }
        }
    };
    LL.DrawObject += (s, ea) =>
    {
        if (ea.IsBeforePaint == false && ea.ObjectType == LlObjectType.Table)
        {
            if (ea.ObjFinished.HasValue && ea.ObjFinished.Value)
                _passedFields.Add(_lastCompany);
            (s as ListLabel).Variables.Add("ContentsPrinted", String.Join(",", _passedFields));
            _passedFields.Clear();
        }
    };
    LL.Print();
}  

Die Variable kann natürlich auch an ein Barcode-Objekt übergeben werden.

Es geht sicher noch besser :slightly_smiling_face:, aber ich hoffe dass hilft dir erstmal weiter.

1 Like