コード例 #1
0
 private void barButtonItemDatenbankVorbereiten_ItemClick(object sender, ItemClickEventArgs e)
 {
     if (_bdDt != null)
     {
         IQueryable <BDDatenbankTabelleFeld> iqDtf = DataHelperBDDatenbankTabelle.Lese_mittelsTabelle_BDDatenbankTabelleFelder(Program._sBDDatenbankLibraryCRM, _bdDt);
         if (iqDtf.Count() == 0)
         {
             //Alle Felder anlegen
             KUND kund = new KUND(Program._sDB100);
             List <HelperClassMetadata> LiMd1 = DataHelperKunde.LeseMetadata(kund);
             foreach (HelperClassMetadata hcMd in LiMd1)
             {
                 bool result = DataHelperBDDatenbankTabelle.Erstelle_mittelsTabelle_mittelsMetadata_BDDatenbankTabelleFeld(Program._sBDDatenbankLibraryCRM, _bdDt, hcMd);
             }
         }
     }
 }
コード例 #2
0
        private void barButtonItemTabelleImportieren_ItemClick(object sender, ItemClickEventArgs e)
        {
            try
            {
                //if (_liMd.Count <= 0)
                //{
                //    MessageBox.Show("Error: Feldnamen können nicht überpürft werden.");
                //    return;
                //}

                //Sind in den Spalten nur korrekt geschriebene Feldnamen?
                //Todo durch alle Spalten
                //if (_liMd.Exists(x => x.Feldname.Contains(Feldname)))
                //{

                //}

                bool resultCheckFeldnamen = CheckFeldnamen(AnzahlSpalten());
                if (!resultCheckFeldnamen)
                {
                    return;
                }
                int lz = LetzteZeile();
                if (lz > 0)
                {
                    for (int row = 1; row < lz; row++)
                    {
                        int cols = AnzahlSpalten();
                        if (cols > 0)
                        {
                            KUND ku = null;

                            CellValue cellValueKundeKennung = _worksheet1.Cells[row, 0].Value;
                            if (cellValueKundeKennung != null)
                            {
                                ku = DataHelperKunde.LeseKunde(cellValueKundeKennung.TextValue);
                            }
                            if (ku == null)
                            {
                                ku = new KUND(Session.DefaultSession);
                                //Kundenkennung aus Nachname und Vorname
                                //=LINKS(WECHSELN(WECHSELN(VERKETTEN(B20;" ";C20);" ";"");"-";"");15)
                                ku.Kunde = "K" + row.ToString().PadLeft(4, '0'); //ToDo
                                //KUND1 ku1 = new KUND1(Session.DefaultSession);
                            }

                            string pn = nameof(ku.Kunde);

                            for (int col = 0; col < cols; col++)
                            {
                                Cell   cell      = _worksheet1.Cells[row, col];
                                var    cellValue = cell.Value;
                                string Feldname  = _worksheet1.Cells[0, col].Value.TextValue;

                                if (!string.IsNullOrEmpty(Feldname) && cellValue != null && cellValue.Type != CellValueType.None)
                                {
                                    PropertyInfo propKu = ku.GetType().GetProperty(Feldname, BindingFlags.Public | BindingFlags.Instance);
                                    if (propKu.Name != pn && propKu != null && propKu.CanWrite)
                                    {
                                        Type typeZiel   = propKu.PropertyType;
                                        Type typeQuelle = null;
                                        if (cellValue.Type == CellValueType.Numeric)
                                        {
                                            object value = null;
                                            if (Type.GetTypeCode(typeZiel) == TypeCode.String)
                                            {
                                                value = cellValue.NumericValue.ToString();
                                            }
                                            else
                                            {
                                                typeQuelle = cellValue.NumericValue.GetType();
                                                switch (Type.GetTypeCode(typeQuelle))
                                                {
                                                case TypeCode.Byte:
                                                    break;

                                                case TypeCode.SByte:
                                                    break;

                                                case TypeCode.UInt16:
                                                    break;

                                                case TypeCode.UInt32:
                                                    break;

                                                case TypeCode.UInt64:
                                                    break;

                                                case TypeCode.Int16:
                                                    break;

                                                case TypeCode.Int32:
                                                    break;

                                                case TypeCode.Int64:
                                                    break;

                                                case TypeCode.Decimal:
                                                    break;

                                                case TypeCode.Double:
                                                    if (Type.GetTypeCode(typeZiel) == TypeCode.Decimal)
                                                    {
                                                        value = (decimal)cellValue.NumericValue;
                                                    }
                                                    break;

                                                case TypeCode.Single:
                                                    break;
                                                }
                                            }
                                            if (value != null)
                                            {
                                                propKu.SetValue(ku, value, null);
                                            }
                                            else
                                            {
                                                string typeQuelleName = typeQuelle != null ? typeQuelle.Name : "Quelle ???";
                                                MessageBox.Show(Feldname + ": Konvertierung von " + typeQuelleName + " zu " + typeZiel.Name + " fehlt.");
                                            }
                                        }
                                        else if (cellValue.Type == CellValueType.Text)
                                        {
                                            typeQuelle = cellValue.TextValue.GetType();
                                            if (typeQuelle == typeZiel)
                                            {
                                                propKu.SetValue(ku, cellValue.TextValue, null);
                                            }
                                        }
                                        else if (cellValue.Type == CellValueType.DateTime)
                                        {
                                            propKu.SetValue(ku, cellValue.DateTimeValue, null);
                                        }
                                        else
                                        {
                                            propKu.SetValue(ku, cellValue.TextValue, null);
                                        }
                                    }
                                    //PropertyInfo propKu1 = ku.GetType().GetProperty(Feldname, BindingFlags.Public | BindingFlags.Instance);
                                    //if (null != propKu1 && propKu1.CanWrite)
                                    //{
                                    //    propKu1.SetValue(ku, cellValue, null);
                                    //}
                                }
                            }
                            BDDatenbankTabelle bdDt = DataHelperBDDatenbankTabelle.Lese_mittelsDatenbankName_mittelsTabelleName_BDDatenbankTabelle(Program._sBDDatenbankLibraryCRM, "DB100", "KUND");
                            IQueryable <BDDatenbankTabelleFeld> iqBdDtf = DataHelperBDDatenbankTabelle.Lese_mittelsTabelle_BDDatenbankTabelleFelder(Program._sBDDatenbankLibraryCRM, bdDt);
                            foreach (BDDatenbankTabelleFeld bdDtf in iqBdDtf)
                            {
                                bool   IstSchlüsselfeld = bdDtf.IstSchlüsselfeld;
                                string Datentyp         = bdDtf.DatentypGenerisch.Datentyp;
                                string Feldname         = bdDtf.Feldname;
                                int    Feldlänge        = bdDtf.Feldlänge;
                                if (!IstSchlüsselfeld)
                                {
                                    PropertyInfo propKu = ku.GetType().GetProperty(Feldname, BindingFlags.Public | BindingFlags.Instance);
                                    if (propKu != null && propKu.CanWrite)
                                    {
                                        var value = propKu.GetValue(ku);
                                        if (Datentyp == "string")
                                        {
                                            string s = (string)value;
                                            if (s != null && Feldlänge > 0 && s.Length > Feldlänge)
                                            {
                                                string sAbgeschnitten = s.Substring(0, Feldlänge - 1);
                                                propKu.SetValue(ku, sAbgeschnitten, null);
                                            }
                                            else if (s == null || string.IsNullOrEmpty(s))
                                            {
                                                propKu.SetValue(ku, "", null);
                                            }
                                        }
                                        else if (Datentyp == "int")
                                        {
                                            int?i    = (int)value;
                                            int imin = 0;
                                            if (i == null || i < imin)
                                            {
                                                propKu.SetValue(ku, imin, null);
                                            }
                                        }
                                        else if (Datentyp == "decimal")
                                        {
                                            decimal?d    = (decimal)value;
                                            decimal dmin = 0m;
                                            if (d == null || d < dmin)
                                            {
                                                propKu.SetValue(ku, dmin, null);
                                            }
                                        }
                                        else if (Datentyp == "datetime")
                                        {
                                            DateTime dt    = (DateTime)value;
                                            DateTime dtmin = new DateTime(1900, 1, 1);
                                            if (dt == null || dt < dtmin)
                                            {
                                                propKu.SetValue(ku, dtmin, null);
                                            }
                                        }
                                    }
                                }
                            }
                            ku.Save();
                            _worksheet1.Cells[row, 0].Value = ku.Kunde;
                            //ku1.CompoundKey1.Kunde = ku.Kunde;
                            //ku1.CompoundKey1.Nr = 1;
                            //ku1.Save();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }