//------------------------------------------------------------------------ //-----------------------ДОБАВЛЕНИЕ УСЛОВИЙ------------------------------- //Добавление условия private void bAddCondition_Click(object sender, EventArgs e) { //Проверки добавляемого условия на заполнение всех полей if (cbFields.SelectedItem == null || string.IsNullOrEmpty(cbCriterion.Text) || string.IsNullOrEmpty(cbFieldValue.Text) || string.IsNullOrEmpty(cbLigament.Text)) { MessageBox.Show("Были введены не все параметры условия!", "Ошибка"); return; } //Проверка значения на правильность object value = null; var dataType = ((ColumnInfo)cbFields.SelectedItem).ColumnType; //Массив байт - не работает if (dataType == NpgsqlDbType.Bytea) { MessageBox.Show("Условия с полем данного типа не может быть добавлено", "Ошибка"); return; } //Если текст, то это и есть значение if (dataType == NpgsqlDbType.Varchar || dataType == NpgsqlDbType.Text || dataType == NpgsqlDbType.Char) { value = cbFieldValue.Text; } //Если дата/время, используем связанный объект или пытаемся парсить строку else if (dataType == NpgsqlDbType.Date || dataType == NpgsqlDbType.Time || dataType == NpgsqlDbType.Timestamp) { if (cbFieldValue.SelectedItem == null) { if (DateTime.TryParse(cbFieldValue.Text, out DateTime tmp)) { value = tmp; } } else { value = cbFieldValue.SelectedItem; } } //Если числовые типы - парсим строку else if (dataType == NpgsqlDbType.Integer) { if (int.TryParse(cbFieldValue.Text, out int tmp)) { value = tmp; } } else if (dataType == NpgsqlDbType.Real) { if (float.TryParse(cbFieldValue.Text, out float tmp)) { value = tmp; } } else if (dataType == NpgsqlDbType.Double) { if (double.TryParse(cbFieldValue.Text, out double tmp)) { value = tmp; } } else if (dataType == NpgsqlDbType.Numeric) { if (decimal.TryParse(cbFieldValue.Text, out decimal tmp)) { value = tmp; } } //Если значение не было получено - ошибка if (value == null) { MessageBox.Show("Введено неверное значение!", "Ошибка"); return; } //Добавление условия interfaceManager.AddConditionToListView(lvConditions, new Condition { Column = (ColumnInfo)cbFields.SelectedItem, Criterion = cbCriterion.Text, Value = value, Ligament = cbLigament.Text }); }