コード例 #1
0
        private void AddNewCondition()
        {
            if (ValidateInput())
            {
                string sql       = string.Empty;
                string condition = string.Empty;

                if (txtFieldValue.Enabled)
                {
                    string columnName = cmbFieldName.SelectedItem.ToString();
                    string paramName  = "@" + columnName + runningParamIndex.ToString();
                    sql = columnName;
                    sql = sql + TranslateOperator(cmbFieldOperator.SelectedItem.ToString());
                    sql = sql + paramName;

                    IRowFilterCondition rowFc = GetRowFilterCondition(sql, paramName, columnName);

                    // e.g. LastName = @LastName0
                    // The runningParamIndex is prefixed into the param name in case there are multiple params
                    // using the same field name. For example, LastName = 'Smith' AND LastName = 'Smythe'

                    string friendlyOp = cmbFieldOperator.SelectedItem.ToString();

                    condition = cmbFieldName.SelectedItem.ToString();
                    if (friendlyOp.ToLowerInvariant().Contains("is less than n days"))
                    {
                        condition = condition + StringLiterals.SPACE + friendlyOp.Replace(" N ", " " + txtFieldValue.Text + " ");
                    }
                    else
                    {
                        condition = condition + StringLiterals.SPACE + friendlyOp + StringLiterals.SPACE;
                        condition = condition + rowFc.Value.ToString();
                    }

                    runningParamIndex++;

                    if (!lbxRecordFilters.Items.Contains(condition) && !rowFilterConditions.Contains(rowFc))
                    {
                        rowFc.Description = condition;
                        lbxRecordFilters.Items.Add(condition);
                        rowFilterConditions.Add(rowFc);
                    }
                    else
                    {
                        Epi.Windows.MsgBox.ShowInformation(ImportExportSharedStrings.CONDITION_ALREADY_ADDED);
                    }
                }
                else
                {
                    // do nothing at the moment; not implemented
                }
            }
        }
コード例 #2
0
        private IRowFilterCondition GetRowFilterCondition(string conditionSql, string conditionParamName, string conditionColumnName)
        {
            IRowFilterCondition rowFc = null;
            object value = GetValue();

            switch (selectedFieldType)
            {
            case MetaFieldType.Text:
            case MetaFieldType.TextUppercase:
            case MetaFieldType.PhoneNumber:
            case MetaFieldType.Multiline:
            case MetaFieldType.LegalValues:
            case MetaFieldType.CommentLegal:
            case MetaFieldType.Codes:
            case MetaFieldType.GUID:
                rowFc = new TextRowFilterCondition(conditionSql, conditionColumnName, conditionParamName, value);
                break;

            case MetaFieldType.Date:
            case MetaFieldType.DateTime:
            case MetaFieldType.Time:
                rowFc = new DateRowFilterCondition(conditionSql, conditionColumnName, conditionParamName, value);
                break;

            case MetaFieldType.Option:
            case MetaFieldType.Number:
                rowFc = new NumberRowFilterCondition(conditionSql, conditionColumnName, conditionParamName, value);
                break;

            case MetaFieldType.YesNo:
                rowFc = new YesNoRowFilterCondition(conditionSql, conditionColumnName, conditionParamName, value);
                break;

            case MetaFieldType.Checkbox:
                rowFc = new CheckboxRowFilterCondition(conditionSql, conditionColumnName, conditionParamName, value);
                break;

            default:
                throw new ApplicationException("Not a valid field type");
            }

            return(rowFc);
        }