public override ListFilter Clone(Map map, FindDescription newOwner) { ListFilterDropDown <T> clone = extraOption == 0 ? (ListFilterDropDown <T>)base.Clone(map, newOwner) : //ListFilterwithOption handles sel, and refName for sel if needed (ListFilterDropDown <T>)BaseClone(map, newOwner); //This is not needed with extraOption, so bypass ListFilterWithOption<T> to ListFilter clone.extraOption = extraOption; return(clone); }
public override ListFilter Clone(Map map, FindDescription newOwner) { ListFilterWithOption <T> clone = (ListFilterWithOption <T>)base.Clone(map, newOwner); if (typeof(ILoadReferenceable).IsAssignableFrom(typeof(T))) { if (map == null) //SAVING: I don't have refName, but I make it and tell saved clone { clone.refName = sel == null ? "null" : MakeRefName(); } else //LOADING: use my refName to resolve loaded clone's reference { if (refName == "null") { clone.sel = default(T); } { if (refName == null) { clone.ResolveReference(MakeRefName(), map); //Cloning from ref to ref } else { clone.ResolveReference(refName, map); } if (clone.sel == null) { Messages.Message("TD.TriedToLoad0FilterNamed1ButTheCurrentMapDoesntHaveAnyByThatName".Translate(def.LabelCap, refName), MessageTypeDefOf.RejectInput); } } } } else { clone.sel = sel; } return(clone); }
public static (string editedQuery, FindDescription findDescription) MakeFindQuery(FindDescription currentFindDescription, List <FieldParameters> listOfField, string query, string notNullQuery = "", string nullQuery = "", string groupBy = "", string nullQueryAlex = "") { var findWindow = new FindWindow(currentFindDescription, listOfField); if (findWindow.ShowDialog().Value) { currentFindDescription = findWindow.Result; } else { return(editedQuery : "", findDescription : new FindDescription()); } var field = listOfField.Where(kvp => kvp.application_name == currentFindDescription.field).First().db_name; string editedQuery; // Разбор огромного поиска заказов if (notNullQuery != "") { if (currentFindDescription.value != "") { if (!currentFindDescription.isDate) { editedQuery = notNullQuery.Replace(";", " and " + field + " "); editedQuery += string.Format(currentFindDescription.typeOfFind == TypeOfFind.TypesOfFind.byExactCoincidence ? "= \"{0}\"" : "like \"{0}%\"", currentFindDescription.value); } else { editedQuery = notNullQuery.Replace(";", " and DATE_FORMAT(" + field + ", '%d.%m.%Y') "); editedQuery += string.Format("= \'{0}\'", currentFindDescription.value); } editedQuery = editedQuery.Replace(";", groupBy); editedQuery = editedQuery.Replace(";", " union "); editedQuery += nullQuery; if (!currentFindDescription.isDate) { editedQuery = notNullQuery.Replace(";", " and " + field + " "); editedQuery += string.Format(currentFindDescription.typeOfFind == TypeOfFind.TypesOfFind.byExactCoincidence ? "= \"{0}\"" : "like \"{0}%\"", currentFindDescription.value); } else { editedQuery = notNullQuery.Replace(";", " and DATE_FORMAT(" + field + ", '%d.%m.%Y') "); editedQuery += string.Format("= \'{0}\'", currentFindDescription.value); } editedQuery = editedQuery.Replace(";", groupBy); } else { editedQuery = nullQueryAlex; } } // Остальные формы else { if (!currentFindDescription.isDate) { editedQuery = query.Replace(";", " where " + field + " "); editedQuery += string.Format(currentFindDescription.typeOfFind == TypeOfFind.TypesOfFind.byExactCoincidence ? "= \"{0}\"" : "like \"{0}%\"", currentFindDescription.value); } else { editedQuery = query.Replace(";", " where DATE_FORMAT(" + field + ", '%d.%m.%Y') "); editedQuery += string.Format("= \'{0}\'", currentFindDescription.value); } } return(editedQuery : editedQuery, findDescription : currentFindDescription); }
public static (DataTable dataTable, FindDescription findDescription) GetDataWithFind(FindDescription currentFindDescription, MySqlConnection connection, List <FieldParameters> listOfField, string query, string notNullQuery = "", string nullQuery = "", string groupBy = "", string nullQueryAlex = "") { (string editedQuery, FindDescription findDescription)result = MakeFindQuery(currentFindDescription, listOfField, query, notNullQuery, nullQuery, groupBy, nullQueryAlex); if (result.editedQuery == "") { return(dataTable : null, findDescription : new FindDescription()); } connection.Open(); var dataTable = FormLoader.ExecuteQuery(result.editedQuery, connection); connection.Close(); if (dataTable.Rows.Count == 0) { MessageBox.Show("По отобранному значению ничего не найдено", "Нет строк", MessageBoxButton.OK, MessageBoxImage.Information); } return(dataTable : dataTable, findDescription : result.findDescription); }