void Importa() { if (!Meta.GetFormData(true)) { return; } OpenFileDialog op = new OpenFileDialog(); DialogResult dr = op.ShowDialog(); if (dr != DialogResult.OK) { return; } string fileName = op.FileName; DataTable T = new DataTable(); //Aggiungere a T le colonne del foglio excel T.Columns.Add(new DataColumn("quota", typeof(decimal))); T.Columns.Add(new DataColumn("codice1", typeof(string))); T.Columns.Add(new DataColumn("codice2", typeof(string))); T.Columns.Add(new DataColumn("codice3", typeof(string))); ExcelImport x = new ExcelImport(); x.ImportTable(fileName, T); if (T.Rows.Count == 0) { return; } MetaData metaCostDetail = Meta.Dispatcher.Get("costpartitiondetail"); metaCostDetail.SetDefaults(DS.costpartitiondetail); QueryHelper QHS = Meta.Conn.GetQueryHelper(); //DataTable cfg = Meta.Conn.RUN_SELECT("config", "ayear,idsor1,idsor2,idsor3", null, QHS.CmpEq("ayear", Meta.GetSys("esercizio")), null, false); object idsorkind1 = Meta.GetSys("idsortingkind1"); object idsorkind2 = Meta.GetSys("idsortingkind2"); object idsorkind3 = Meta.GetSys("idsortingkind3"); //bool usePerc = true; string fieldToUse = "rate"; if (rdbCosti.Checked) { //usePerc = false; fieldToUse = "amount"; } DataRow main = DS.costpartition.Rows[0]; foreach (DataRow r in T.Select()) { DataRow det = metaCostDetail.Get_New_Row(main, DS.costpartitiondetail); det[fieldToUse] = r["quota"]; object code1 = r["codice1"]; object code2 = r["codice2"]; object code3 = r["codice3"]; object idsor1 = DBNull.Value; object idsor2 = DBNull.Value; object idsor3 = DBNull.Value; if (idsorkind1 != DBNull.Value && code1.ToString() != "") { idsor1 = Meta.Conn.DO_READ_VALUE("sorting", QHS.AppAnd(QHS.CmpEq("idsorkind", idsorkind1), QHS.CmpEq("sortcode", code1.ToString().Trim())), "idsor"); if (idsor1 == null) { idsor1 = DBNull.Value; MessageBox.Show("Codice " + code1 + " non trovato per coordinata analitica " + Meta.GetSys("titlesortingkind1"), "Errore"); } } if (idsorkind2 != DBNull.Value && code2.ToString() != "") { idsor2 = Meta.Conn.DO_READ_VALUE("sorting", QHS.AppAnd(QHS.CmpEq("idsorkind", idsorkind2), QHS.CmpEq("sortcode", code2.ToString().Trim())), "idsor"); if (idsor2 == null) { idsor2 = DBNull.Value; MessageBox.Show("Codice " + code2 + " non trovato per coordinata analitica " + Meta.GetSys("titlesortingkind2"), "Errore"); } } if (idsorkind3 != DBNull.Value && code3.ToString() != "") { idsor3 = Meta.Conn.DO_READ_VALUE("sorting", QHS.AppAnd(QHS.CmpEq("idsorkind", idsorkind3), QHS.CmpEq("sortcode", code3.ToString().Trim())), "idsor"); if (idsor3 == null) { idsor3 = DBNull.Value; MessageBox.Show("Codice " + code3 + " non trovato per coordinata analitica " + Meta.GetSys("titlesortingkind3"), "Errore"); } } det["idsor1"] = idsor1; det["idsor2"] = idsor2; det["idsor3"] = idsor3; } Meta.FreshForm(true); }