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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }