コード例 #1
0
        public Aufkleber LadeAufkleber(int iId)
        {
            Aufkleber aufkleber = new Aufkleber();

            using (SqlConnection con = new SqlConnection(_connectionString))
            {
                con.Open();
                String sql = "SELECT art.sBezeichnung, mod.sBezeichnung,gro.rGroesse, mod.bSymbolBild, mod.sGeschlecht, fab.sBezeichnung FROM Aufkleber.Artikel_art as art " +
                             "Inner join Aufkleber.Modell_mod as mod On mod.iId = art.mod_iId " +
                             "inner join Aufkleber.Groesse_gro as gro on art.gro_iId = gro.iId " +
                             "inner join Aufkleber.Farbe_fab as fab on fab.iId = art.fab_iId " +
                             "WHERE art.iId = @p1";


                SqlCommand cmd = new SqlCommand(sql, con);
                cmd.Parameters.AddWithValue("@p1", iId);
                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        string  artbezeichnung = (!reader.IsDBNull(0) ? reader.GetString(0) : null);; // Nullable
                        string  modbezeichnung = reader.GetString(1);
                        decimal groesseD       = reader.GetDecimal(2);
                        byte[]  bSymbolbild    = null; // Nullable
                        if (!reader.IsDBNull(3))
                        {
                            int buffersize  = 65536; // 2^16
                            int arrayoffset = 0;
                            bSymbolbild = new byte[buffersize];
                            long nbytesreturned = 0;
                            long dataoffset     = 0;

                            nbytesreturned = reader.GetBytes(3, dataoffset, bSymbolbild, arrayoffset, buffersize);
                            while (nbytesreturned == buffersize)
                            {
                                dataoffset  += buffersize;
                                arrayoffset += buffersize;
                                Array.Resize(ref bSymbolbild, bSymbolbild.Length + buffersize);
                                nbytesreturned = reader.GetBytes(3, dataoffset, bSymbolbild, arrayoffset, buffersize);
                            }

                            Array.Resize(ref bSymbolbild, bSymbolbild.Length - (buffersize - (int)nbytesreturned));
                        }
                        string geschlechtS = reader.GetString(4);
                        string farbe       = reader.GetString(5);

                        char[] geschlecht = geschlechtS.ToCharArray();
                        aufkleber = (new Aufkleber(artbezeichnung, modbezeichnung, groesseD, bSymbolbild, geschlecht[0], farbe));
                    }
                }
                con.Close();
            }
            return(aufkleber);
        }
コード例 #2
0
        internal void GenerateFixedDocument(List <Artikel_art> liste, int zahl)
        {
            bool ok;                   // Parse
            int  anzahldavor     = 0;  // anzahl der Aufkeber die ausgelassen werden sollen
            int  aufkleberanzahl = 12; // Anzahl der zu druckenden Aufkleber pro Blatt

            #region Positionen frei lassen
            if (uiTBAnzahlDavor.Text.Trim() != "")                        // Wenn das Feld nicht leer gelassen wurde
            {
                ok = int.TryParse(uiTBAnzahlDavor.Text, out anzahldavor); // Dann Parses

                if (!ok || anzahldavor > aufkleberanzahl - 1)             // Prüfen ob eine gültige Zahl übergeben wurde
                {
                    MessageBox.Show("Anzahl der davor gedruckten Aufkleber ist keine gültige Zahl [1 bis " + (aufkleberanzahl - 1) + "]", "Druckfehler");
                    return;
                }
                // Dann Fälle abprüfen, um die ausgellassen Positionen hinzuzufügen
                // Davor gedruckte Anzahl < als die vorherig eingetragene
                if (aufklebeberdavor > anzahldavor)
                {
                    _idListe.RemoveRange(0, aufklebeberdavor);
                    aufklebeberdavor = 0;
                    for (int i = 0; i < anzahldavor; i++)
                    {
                        _idListe.Insert(i, null);

                        aufklebeberdavor = anzahldavor;
                    }
                }
                // Davor gedruckte Anzahl > als die vorherig eingetragene
                else
                {
                    for (int i = 0; i < anzahldavor; i++)
                    {
                        if (_idListe.Count() < anzahldavor || _idListe[i] != null)
                        {
                            _idListe.Insert(i, null);
                        }
                        aufklebeberdavor = anzahldavor;
                    }
                }
            }


            // Wenn das Feld "" ist
            // davor gedruckte Anzahl wird zurückgesetzt
            else if (aufklebeberdavor > 0)
            {
                _idListe.RemoveRange(0, aufklebeberdavor);
                aufklebeberdavor = 0;
            }
            #endregion Positionen frei lassen

            #region Artikel2Id
            // Id von übergebenen Artikeln wird gesammelt

            //int zahl = 1000;
            if (liste != null)
            {
                rmanzahl.Add(0);
                foreach (var item in liste)
                {
                    if (item.iId != null)
                    {
                        int?[] zwischen = new int?[2];
                        rmanzahl[rmanzahl.Count() - 1]++;
                        int?id = item.iId;
                        if (id != null)
                        {
                            zwischen[0] = id;
                            zwischen[1] = zahl;
                            _idListe.Add(zwischen);
                        }
                    }
                }
            }
            #endregion Artikel2Id

            // Wenn Aufkleber zum Drucken da sind
            if (_idListe.Count() != 0)
            {
                #region Id2Aufkleber
                List <Aufkleber> array = new List <Aufkleber>();
                for (int i = 0; i < _idListe.Count(); i++)
                {
                    if (_idListe[i] != null)
                    {
                        int?[] zwischen = new int?[2];
                        zwischen = _idListe[i];
                        if (zwischen[0] != null)
                        {
                            _db = new Database();
                            if (zwischen[1] > 1)
                            {
                                Aufkleber aZwischen = _db.LadeAufkleber((int)zwischen[0]);

                                for (int j = 0; j < zwischen[1]; j++)
                                {
                                    array.Add(aZwischen);
                                }
                            }
                            else
                            {
                                array.Add(_db.LadeAufkleber((int)zwischen[0])); // Aufkleber Array wird aus DB geladen
                            }
                        }
                    }
                    else
                    {
                        array.Add(null); // freier Platz (bereits gedruckte Aufkleber)
                    }
                }
                #endregion Id2Aufkleber
                #region Dokument mit Aufklebern erstellen
                // Dokument erstellen
                uiDocumentViewer.FitToMaxPagesAcross(1);
                Size          pagesize = new Size(Cm2Dip(21), Cm2Dip(29.7)); // DIN A4
                FixedDocument document = new FixedDocument();
                document.DocumentPaginator.PageSize = pagesize;

                double  oben;
                double  links;
                int     counter;
                decimal seiten;

                seiten = ((decimal)array.Count()) / ((decimal)aufkleberanzahl);

                int stellearray = 0;
                int maxarray    = aufkleberanzahl;

                // Seiten mit Aufklebern hinzufügen
                for (int i = 0; i < seiten; i++)
                {
                    oben    = 0.0;
                    links   = 0.75;
                    counter = 1;

                    // Neue Seite
                    FixedPage page1 = new FixedPage
                    {
                        Width  = document.DocumentPaginator.PageSize.Width,
                        Height = document.DocumentPaginator.PageSize.Height
                    };

                    // Neuer Aufkleber
                    for (int j = stellearray; j < maxarray && j < array.Count(); j++)
                    {
                        // Nur wenn der Aufkleber nicht ausgelassen werden soll
                        if (array[j] != null)
                        {
                            UcAufkleber p1e1 = new UcAufkleber();
                            p1e1.DataContext = array[j];
                            p1e1.Margin      = new Thickness(Cm2Dip(links), Cm2Dip(oben), 0, 0);
                            p1e1.Width       = Cm2Dip(9);
                            p1e1.Height      = Cm2Dip(4.5);
                            page1.Children.Add(p1e1);
                        }
                        // Position des nächsten Aufklebers festlegen
                        if (counter == 2)
                        {
                            counter = 1;
                            oben   += 4.5;
                            links   = 0.75;
                        }
                        else
                        {
                            counter++;
                            links += 9.75;
                        }
                    }

                    // Inhalt zur Seite hinzufügen
                    PageContent page3Content = new PageContent();
                    ((IAddChild)page3Content).AddChild(page1);
                    document.Pages.Add(page3Content);
                    stellearray += aufkleberanzahl;
                    maxarray    += aufkleberanzahl;
                }

                // Dokument erstellen
                uiDocumentViewer.Document = document;
                #endregion Dokument mit Aufklebern erstellen
            }
        }