private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
        {
            if (editState != EnumEditState.Ready)
            {
                return;
            }
            editState = EnumEditState.FieldSelectionChanged;

            if (dataGrid1.CurrentCell != null && dataGrid1.CurrentCell.RowIndex != nCurRow)
            {
                nCurRow = dataGrid1.CurrentCell.RowIndex;
                if (nCurRow >= 0)
                {
                    if (ds.Tables[0].Rows[nCurRow][2] != null)
                    {
                        txtValue.Text = ds.Tables[0].Rows[nCurRow][2].ToString();
                    }
                    else
                    {
                        txtValue.Text = "";
                    }
                }
            }
            editState = EnumEditState.Ready;
        }
 private void txtValue_TextChanged(object sender, System.EventArgs e)
 {
     if (editState != EnumEditState.Ready)
     {
         return;
     }
     editState = EnumEditState.ValueTextChanged;
     try
     {
         int n = dataGrid1.CurrentCell.RowIndex;
         if (n >= 0 && ds != null && ds.Tables.Count > 0 && n < ds.Tables[0].Rows.Count)
         {
             string  fn  = (string)(dataGrid1.CurrentRow.Cells[0].Value);
             EPField fld = objRet.GetField(fn);
             if (fld != null)
             {
                 fld.FieldText           = txtValue.Text;
                 ds.Tables[0].Rows[n][2] = txtValue.Text;
                 objRet.SQL  = string.Empty;
                 txtSQL.Text = objRet.SQL;
             }
         }
     }
     catch (Exception er)
     {
         FormLog.NotifyException(true, er);
     }
     finally
     {
         editState = EnumEditState.Ready;
     }
 }
        /// <summary>
        /// load from outside
        /// </summary>
        /// <param name="sql"></param>
        public void LoadData(SQLNoneQuery sql)
        {
            if (editState != EnumEditState.NotLoaded)
            {
                throw new ExceptionLimnorDatabase("Calling LoadData at the state of {0}", editState);
            }

            dbConn = sql.Connection;
            //load table names into lstTable
            QueryParser._UseLowerCase = sql.Connection.ConnectionObject.LowerCaseSqlKeywords;
            System.Data.DataTable tbl = sql.Connection.ConnectionObject.GetTables();
            if (tbl != null)
            {
                for (int i = 0; i < tbl.Rows.Count; i++)
                {
                    if (tbl.Rows[i]["Table_Name"] != null)
                    {
                        string s = tbl.Rows[i]["Table_Name"].ToString();
                        int    n = lstTable.Items.Add(s);
                        if (string.Compare(s, sql.TableName, StringComparison.OrdinalIgnoreCase) == 0)
                        {
                            lstTable.SelectedIndex = n;
                        }
                    }
                }
            }
            objRet = ((SQLNoneQuery)sql.Clone());

            int k = (int)(objRet.CommandType);

            if (k >= 0 && k < cbxType.Items.Count)
            {
                cbxType.SelectedIndex = k;
            }

            txtWhere.Text          = objRet.Filter;
            txtSQL.Text            = objRet.SQL;
            btQueryBuilder.Enabled = (objRet.CommandType != enmNonQueryType.Insert);

            if (!string.IsNullOrEmpty(objRet.TableName))
            {
                for (int i = 0; i < lstTable.Items.Count; i++)
                {
                    if (string.Compare(objRet.TableName, lstTable.Items[i].ToString(), StringComparison.OrdinalIgnoreCase) == 0)
                    {
                        lstTable.SelectedIndex = i;
                        break;
                    }
                }
            }
            else
            {
                if (lstTable.Items.Count > 0)
                {
                    lstTable.SelectedIndex = 0;
                }
            }
            editState = EnumEditState.Ready;
            lstTable_SelectedIndexChanged(this, null);
        }
 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;
     }
 }
 private void btChkSyntax_Click(object sender, System.EventArgs e)
 {
     if (editState != EnumEditState.Ready)
     {
         return;
     }
     editState = EnumEditState.CheckSyntaxClick;
     if (bSQLChanged && checkSyntax())
     {
         txtSQL.ForeColor = System.Drawing.Color.Black;
     }
     editState = EnumEditState.Ready;
 }
 private void dataGrid1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
 {
     if (editState != EnumEditState.Ready)
     {
         return;
     }
     editState = EnumEditState.ValueCellChanged;
     try
     {
         if (e.ColumnIndex == 1)
         {
             bool   b  = (bool)(dataGrid1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);
             string fn = (string)(dataGrid1.Rows[e.RowIndex].Cells[0].Value);
             if (b)
             {
                 EPField f = objRet.GetField(fn);
                 if (f == null)
                 {
                     EPField f0 = _currentFields[fn];
                     if (f0 != null)
                     {
                         f = (EPField)f0.Clone();
                         objRet.AddField(f);
                     }
                 }
             }
             else
             {
                 objRet.RemoveField(fn);
             }
             objRet.SQL  = string.Empty;
             txtSQL.Text = objRet.SQL;
         }
         else if (e.ColumnIndex == 2)
         {
             string  fn  = (string)(dataGrid1.Rows[e.RowIndex].Cells[0].Value);
             string  val = (string)(dataGrid1.Rows[e.RowIndex].Cells[2].Value);
             EPField f   = objRet.GetField(fn);
             if (f != null)
             {
                 f.FieldText = val;
                 objRet.SQL  = string.Empty;
                 txtSQL.Text = objRet.SQL;
             }
         }
     }
     finally
     {
         editState = EnumEditState.Ready;
     }
 }
        private void txtWhere_TextChanged(object sender, System.EventArgs e)
        {
            if (editState != EnumEditState.Ready)
            {
                return;
            }
            editState = EnumEditState.WhereTextChanged;
            string filter = adjustFilter(txtWhere.Text);

            objRet.SetFilter(filter);
            objRet.ResetSQL();
            txtSQL.Text = objRet.SQL;
            editState   = EnumEditState.Ready;
        }
        private void txtSQL_TextChanged(object sender, System.EventArgs e)
        {
            if (editState != EnumEditState.Ready)
            {
                return;
            }
            editState = EnumEditState.SqlTextChanged;

            try
            {
                txtSQL.ForeColor = System.Drawing.Color.Red;
                bSQLChanged      = true;
            }
            finally
            {
                editState = EnumEditState.Ready;
            }
        }
 private void reloadFields()
 {
     if (editState == EnumEditState.Ready)
     {
         editState = EnumEditState.Loading;
         if (ds != null)
         {
             try
             {
                 if (ds.Tables.Count > 0)
                 {
                     if (ds.Tables[0].Rows.Count > 0)
                     {
                         EPField   fld;
                         FieldList flds = new FieldList();
                         for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                         {
                             if (VPLUtil.ObjectToBool(ds.Tables[0].Rows[i][1]))
                             {
                                 fld      = new EPField();
                                 fld.Name = ds.Tables[0].Rows[i][0].ToString();
                                 if (ds.Tables[0].Rows[i][2] != null && ds.Tables[0].Rows[i][2] != System.DBNull.Value)
                                 {
                                     fld.FieldText = ds.Tables[0].Rows[i][2].ToString();
                                 }
                                 fld.FromTableName = ds.Tables[0].TableName;
                                 flds.AddField(fld);
                             }
                         }
                         objRet.SetFields(flds);
                         showSQL();
                     }
                 }
             }
             catch (Exception er)
             {
                 FormLog.NotifyException(true, er);
             }
         }
         editState = EnumEditState.Ready;
     }
 }
        private void showSQL()
        {
            EnumEditState st = editState;

            editState = EnumEditState.Loading;
            //
            loadFromCache();
            //
            objRet.SetConnection(dbConn);
            //
            if (ds != null && ds.Tables.Count > 0)
            {
                for (int j = 0; j < ds.Tables[0].Rows.Count; j++)
                {
                    ds.Tables[0].Rows[j][1] = false;
                    ds.Tables[0].Rows[j][2] = string.Empty;
                }
                //
                bool b2 = bSQLChanged;
                bSQLChanged   = true;
                txtWhere.Text = objRet.Filter;
                txtSQL.Text   = objRet.SQL;
                if (checkSyntax())
                {
                    objRet.SetFilter(adjustFilter(objRet.Filter));
                    txtWhere.Text           = objRet.Filter;
                    txtSQL.Text             = objRet.SQL;
                    txtWhere.SelectionStart = txtWhere.Text.Length;
                    txtSQL.SelectionStart   = txtSQL.Text.Length;
                    btQueryBuilder.Enabled  = (objRet.CommandType != enmNonQueryType.Insert);
                    bSQLChanged             = b2;
                    txtSQL.ForeColor        = Color.Black;
                }
            }
            editState = st;
        }
        private void btOK_Click(object sender, System.EventArgs e)
        {
            if (editState != EnumEditState.Ready)
            {
                return;
            }
            editState   = EnumEditState.OkClick;
            bSQLChanged = true;
            if (checkSyntax())
            {
                if (objRet.ParamCount > 0)
                {
                    DlgParameters dlg = new DlgParameters();
                    dlg.LoadData(objRet.Parameters);
                    dlg.ShowDialog(this);
                }
            }
            else
            {
                MessageBox.Show(txtInfo.Text);
            }

            this.DialogResult = System.Windows.Forms.DialogResult.OK;
        }
        private void lstTable_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            if (editState != EnumEditState.Ready)
            {
                return;
            }
            editState = EnumEditState.TableChanged;
            try
            {
                int n = lstTable.SelectedIndex;
                if (n >= 0)
                {
                    //reload Field Grid ======================================
                    //
                    dt           = new DatabaseTable();
                    dt.TableName = lstTable.Items[n].ToString();
                    //
                    loadFromCache();
                    //
                    ds = new System.Data.DataSet("Fields");
                    ds.Tables.Add(dt.TableName);
                    ds.Tables[0].Columns.Add();
                    ds.Tables[0].Columns.Add();
                    ds.Tables[0].Columns.Add();
                    //
                    ds.Tables[0].Columns[0].Caption    = "FieldName";
                    ds.Tables[0].Columns[0].ColumnName = "FieldName";
                    ds.Tables[0].Columns[0].DataType   = typeof(string);
                    ds.Tables[0].Columns[0].MaxLength  = 30;
                    ds.Tables[0].Columns[0].ReadOnly   = true;
                    //
                    ds.Tables[0].Columns[1].Caption    = "Include";
                    ds.Tables[0].Columns[1].ColumnName = "Include";
                    ds.Tables[0].Columns[1].DataType   = typeof(bool);
                    //
                    ds.Tables[0].Columns[2].Caption    = "Value";
                    ds.Tables[0].Columns[2].ColumnName = "Value";
                    ds.Tables[0].Columns[2].DataType   = typeof(string);
                    ds.Tables[0].Columns[2].MaxLength  = 80;
                    //
                    dataGrid1.AllowUserToOrderColumns = false;
                    //
                    dt.GetFields(dbConn.ConnectionObject);
                    int      count = dt.FieldCount;
                    object[] vs;
                    EPField  fld, fld2;
                    _currentFields = new FieldList();
                    for (int i = 0; i < count; i++)
                    {
                        fld = dt.GetField(i);
                        _currentFields.AddField(fld);
                        vs    = new object[3];
                        vs[0] = fld.Name;
                        fld2  = objRet.GetField(fld.Name);
                        if (fld2 != null)
                        {
                            fld2.OleDbType = fld.OleDbType;
                            vs[1]          = true;
                            vs[2]          = fld2.FieldText;
                        }
                        else
                        {
                            vs[1] = false;
                            vs[2] = "";
                        }
                        ds.Tables[0].Rows.Add(vs);
                    }
                    //
                    ds.Tables[0].ColumnChanged  += new System.Data.DataColumnChangeEventHandler(dlgPropSQLNonQuery_ColumnChanged);
                    ds.Tables[0].ColumnChanging += new System.Data.DataColumnChangeEventHandler(dlgPropSQLNonQuery_ColumnChanging);
                    //
                    dataGrid1.DataSource = null;
                    dataGrid1.Columns.Clear();
                    dataGrid1.AutoGenerateColumns      = true;
                    dataGrid1.DataSource               = ds;
                    dataGrid1.DataMember               = dt.TableName;
                    dataGrid1.AllowUserToOrderColumns  = false;
                    dataGrid1.AllowUserToAddRows       = false;
                    dataGrid1.AllowUserToDeleteRows    = false;
                    dataGrid1.AllowUserToResizeRows    = false;
                    dataGrid1.AllowUserToResizeColumns = true;
                    dataGrid1.ColumnHeadersVisible     = true;

                    //
                    dataGrid1.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                    //
                    dataGrid1.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
                    dataGrid1.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable;
                    dataGrid1.Columns[2].SortMode = DataGridViewColumnSortMode.NotSortable;
                    //
                    txtValue.Text = "";
                    //
                    if (string.Compare(objRet.TableName, dt.TableName, StringComparison.OrdinalIgnoreCase) != 0)
                    {
                        saveTocCache();
                    }
                    showSQL();
                }
            }
            finally
            {
                editState = EnumEditState.Ready;
            }
        }
        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);
        }