private static Dictionary <string, string> GetAttributeMapping(OleDbConnection conn, string sql, string lookupTableName, string minMaterial) { Dictionary <string, string> attMapping = new Dictionary <string, string>(); const int maxAttColumn = 12; // determine the fields to look into sql = string.Format("SELECT * FROM wv_lookup_table WHERE lookup_table='{0}'", lookupTableName); using (OleDbDataReader dr = UtilityDb.GetDataReader(sql, conn)) { while (dr.Read()) { for (int i = 1; i < maxAttColumn; i++) { string attFieldName = "ATT" + i; for (int columnIndex = 0; columnIndex < dr.FieldCount; columnIndex++) { string columnName = dr.GetName(columnIndex); if (columnName == attFieldName) { attMapping[columnName] = dr[columnName].ToString(); break; } } } break; } } // TEST CODE // minMaterial = "207251/N"; // fetch the actual values Dictionary <string, string> attMappingWithValues = new Dictionary <string, string>(); sql = string.Format("SELECT * FROM {0} WHERE MIN_MATERIAL='{1}'", lookupTableName, minMaterial); using (OleDbDataReader dr = UtilityDb.GetDataReader(sql, conn)) { while (dr.Read()) { foreach (string attFieldName in attMapping.Keys) { string actualFieldName = attMapping[attFieldName]; if (dr.HasColumn(actualFieldName)) { attMappingWithValues[attFieldName] = dr[actualFieldName].ToString(); } } } } return(attMappingWithValues); }