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); } } } }
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); } }