void addFilter(bool asAND)
        {
            string s = txtWhere.Text.Trim();

            if (s.Length > 0)
            {
                if (asAND)
                {
                    s += " AND ";
                }
                else
                {
                    s += " OR ";
                }
            }
            bool   bOK  = false;
            string sMsg = "";

            if (lstOP.SelectedIndex < 0)
            {
                sMsg = Resource1.w3;
            }
            else
            {
                EPField fld0 = cbxField.SelectedItem as EPField;
                if (fld0 == null)
                {
                    sMsg = Resource1.w4;
                }
                else
                {
                    EPField fld = (EPField)fld0.Clone();
                    s += qParser.Sep1 + fld.FromTableName + qParser.Sep2 + "." + qParser.Sep1 + fld.Name + qParser.Sep2 + " ";
                    FilterOperator op = lstOP.Items[lstOP.SelectedIndex] as FilterOperator;
                    s += op.sOpStart;
                    s += " ";
                    if (op.StartOnly)
                    {
                        bOK = true;
                    }
                    else
                    {
                        string s2;
                        if (rdoField.Checked)
                        {
                            EPField fldVal = cbxValField.SelectedItem as EPField;
                            if (fldVal != null)
                            {
                                s  += qParser.Sep1 + fldVal.FromTableName + qParser.Sep2 + "." + qParser.Sep1 + fldVal.Name + qParser.Sep2;
                                bOK = true;
                            }
                            else
                            {
                                sMsg = Resource1.w5;
                            }
                        }
                        else if (rdoParam.Checked)
                        {
                            s2 = txtParam.Text.Trim();
                            if (s2.Length > 0)
                            {
                                fld.Name = "@" + s2;
                                s       += fld.Name;
                                if (qParser.parameters == null)
                                {
                                    qParser.parameters = new ParameterList();
                                }
                                qParser.parameters.AddField(fld);
                                bOK = true;
                            }
                            else
                            {
                                sMsg = Resource1.w6;
                            }
                        }
                        else if (rdoConst.Checked)
                        {
                            string sQuote = fld.ConstQuote(oldQuery.IsOleDb);
                            s2 = txtConst.Text.Trim();
                            if (s2.Length > 0)
                            {
                                s2  = s2.Replace("'", "''");
                                s  += sQuote;
                                s  += s2;
                                s  += sQuote;
                                bOK = true;
                            }
                            else
                            {
                                sMsg = Resource1.w7;
                            }
                        }
                    }
                    if (bOK)
                    {
                        s            += op.sOpEnd;
                        txtWhere.Text = s;
                    }
                }
            }
            if (sMsg.Length > 0)
            {
                MessageBox.Show(this, sMsg, this.Text, System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Stop);
            }
        }