private void cbxType_SelectedIndexChanged(object sender, System.EventArgs e)
 {
     if (editState != EnumEditState.Ready)
     {
         return;
     }
     editState = EnumEditState.CommandTypeChanged;
     try
     {
         if (cbxType.SelectedIndex >= 0)
         {
             enmNonQueryType qt = (enmNonQueryType)cbxType.SelectedIndex;
             if (objRet.CommandType != qt)
             {
                 saveTocCache();
                 showSQL();
             }
             btQueryBuilder.Enabled = (qt != enmNonQueryType.Insert);
         }
     }
     finally
     {
         editState = EnumEditState.Ready;
     }
 }
        /// <summary>
        /// load SQLNoneQuery from cache
        /// </summary>
        /// <returns>true:loaded objRet from cache; false current objRet is already good</returns>
        private bool loadFromCache()
        {
            enmNonQueryType qt = enmNonQueryType.Insert;

            if (cbxType.SelectedIndex >= 0)
            {
                qt = (enmNonQueryType)(cbxType.SelectedIndex);
            }
            if (dt != null)
            {
                if (objRet != null)
                {
                    if (objRet.CommandType == qt && string.Compare(objRet.TableName, dt.TableName, StringComparison.OrdinalIgnoreCase) == 0)
                    {
                        saveTocCache();
                        return(false);
                    }
                }
                SQLNoneQuery nq = null;

                if (_commandCache != null)
                {
                    Dictionary <string, SQLNoneQuery> c;
                    if (_commandCache.TryGetValue(qt, out c))
                    {
                        c.TryGetValue(dt.TableName, out nq);
                    }
                }

                if (nq == null)
                {
                    nq             = new SQLNoneQuery();
                    nq.TableName   = dt.TableName;
                    nq.CommandType = qt;
                    objRet         = nq;
                    saveTocCache();
                }
                else
                {
                    objRet = nq;
                }
            }
            return(true);
        }
        private bool checkSyntax()
        {
            if (bSQLChanged)
            {
                QueryParser._UseLowerCase = dbConn.LowerCaseSqlKeywords;
                SQLNoneQuery sql = new SQLNoneQuery();
                sql.SetConnection(dbConn);
                ParameterList ps = objRet.ParseParams();
                if (ps != null)
                {
                    sql.SetParameters(ps);
                }
                if (parseSQLNoneQuery(txtSQL.Text, sql))
                {
                    string tblName = objRet.TableName;
                    objRet = sql;
                    if (string.IsNullOrEmpty(objRet.TableName))
                    {
                        objRet.TableName = tblName;
                    }

                    enmNonQueryType qt = enmNonQueryType.Insert;
                    if (cbxType.SelectedIndex >= 0)
                    {
                        qt = (enmNonQueryType)(cbxType.SelectedIndex);
                    }
                    if (qt != objRet.CommandType)
                    {
                        cbxType.SelectedIndex = (int)qt;
                    }
                    for (int i = 0; i < lstTable.Items.Count; i++)
                    {
                        if (string.Compare(objRet.TableName, lstTable.Items[i].ToString(), StringComparison.OrdinalIgnoreCase) == 0)
                        {
                            if (i != lstTable.SelectedIndex)
                            {
                                lstTable.SelectedIndex = i;
                                EnumEditState st = editState;
                                editState = EnumEditState.Ready;
                                lstTable_SelectedIndexChanged(this, EventArgs.Empty);
                                editState = st;
                            }
                            break;
                        }
                    }
                    setFieldTypes();
                    saveTocCache();
                    if (ds != null)
                    {
                        for (int j = 0; j < ds.Tables[0].Rows.Count; j++)
                        {
                            ds.Tables[0].Rows[j][1] = false;
                            ds.Tables[0].Rows[j][2] = "";
                        }
                        for (int i = 0; i < objRet.FieldCount; i++)
                        {
                            EPField f = objRet.GetField(i);
                            if (f != null)
                            {
                                for (int j = 0; j < ds.Tables[0].Rows.Count; j++)
                                {
                                    string fn = ds.Tables[0].Rows[j][0].ToString();
                                    if (string.Compare(f.Name, fn, StringComparison.OrdinalIgnoreCase) == 0)
                                    {
                                        ds.Tables[0].Rows[j][1] = true;
                                        ds.Tables[0].Rows[j][2] = f.FieldText;
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    return(true);
                }
                else
                {
                    txtSQL.ForeColor = System.Drawing.Color.Red;
                    return(false);
                }
            }
            return(true);
        }