using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using ESRI.ArcGIS.Geodatabase; using DevExpress.XtraEditors; using ESRI.ArcGIS.Carto; using KGIS.Plugin.LayerProperty.Model; using KGIS.Plugin.LayerProperty.Utils; using KGIS.Framework.Utils.Helper; namespace KGIS.Plugin.LayerProperty.View.UC_Controls { public partial class UCSQLCreator : XtraUserControl { private KGIS.Framework.Utils.Dialog.OpenFileDialog openFileDialog1; private SaveFileDialog saveFileDialog1; private IFeatureClass m_FeatureClass; private string sql; public string SQL { get { this.sql = this.memoSQLInfo.Text; return this.sql; } set { this.sql = value; this.memoSQLInfo.Text = this.sql; } } public UCSQLCreator() { InitializeComponent(); } public void InitUC(IFeatureLayer FeaLyr) { this.InitUC(FeaLyr.FeatureClass); } public void InitUC(IFeatureClass feacls) { if (feacls == null) { return; } this.m_FeatureClass = feacls; SQLSearch.FeatureClass = feacls; this.GetFields(feacls); this.lstOnlyValue.Items.Clear(); } private void GetFields(IFeatureClass pLayer) { try { this.lstField.Items.Clear(); if (pLayer != null) { int fieldCount = pLayer.Fields.FieldCount; for (int i = 0; i < fieldCount; i++) { IField field = pLayer.Fields.get_Field(i); if (field.Type != esriFieldType.esriFieldTypeGeometry && field.Type != esriFieldType.esriFieldTypeBlob && field.Type != esriFieldType.esriFieldTypeRaster) { ItemInfo item = new ItemInfo(field, field.Name); this.lstField.Items.Add(item); } } this.lstField.SelectedItem = this.lstField.Items[0]; } } catch (Exception ex) { //RdbUtil.AddException(ex); } } private void btnUnEqual_Click(object sender, System.EventArgs e) { this.InsertString("<>"); } private void btnEquals_Click(object sender, System.EventArgs e) { this.InsertString("="); } private void btnLike_Click(object sender, System.EventArgs e) { this.InsertString("LIKE"); } private void btnGreat_Click(object sender, System.EventArgs e) { this.InsertString(">"); } private void btnGreatAndEqual_Click(object sender, System.EventArgs e) { this.InsertString(">="); } private void btnAnd_Click(object sender, System.EventArgs e) { this.InsertString("AND"); } private void btnLess_Click(object sender, System.EventArgs e) { this.InsertString("<"); } private void btnLessAndEqual_Click(object sender, System.EventArgs e) { this.InsertString("<="); } private void btnOr_Click(object sender, System.EventArgs e) { this.InsertString("OR"); } private void btnQuest_Click(object sender, System.EventArgs e) { this.InsertString(this.btnQuest.Text.Trim()); } private void btnAll_Click(object sender, System.EventArgs e) { this.InsertStringNospace(this.btnAll.Text.Trim()); } private void btnBracket_Click(object sender, System.EventArgs e) { this.InsertString("()"); } private void btnNot_Click(object sender, System.EventArgs e) { this.InsertString("NOT"); } private void btnIs_Click(object sender, System.EventArgs e) { this.InsertString("IS"); } private void InsertString(string mStr) { mStr = " " + mStr.Trim() + " "; int selectionStart = this.memoSQLInfo.SelectionStart; if (this.memoSQLInfo != null && !string.IsNullOrWhiteSpace(this.memoSQLInfo.SelectedText)) { this.memoSQLInfo.SelectedText = mStr; } else { this.memoSQLInfo.Text = this.memoSQLInfo.Text.Insert(selectionStart, mStr).Trim(); } if (mStr.EndsWith("() ")) { this.memoSQLInfo.SelectionStart = mStr.Length + selectionStart - 2; return; } this.memoSQLInfo.SelectionStart = mStr.Length + selectionStart; } private void InsertStringNospace(string mStr) { mStr = (mStr.Trim() ?? ""); int selectionStart = this.memoSQLInfo.SelectionStart; if (this.memoSQLInfo.SelectionLength > 0) { this.memoSQLInfo.SelectedText = mStr; } else { this.memoSQLInfo.Text = this.memoSQLInfo.Text.Insert(selectionStart, mStr).Trim(); } if (mStr.EndsWith("() ")) { this.memoSQLInfo.SelectionStart = mStr.Length + selectionStart - 2; return; } this.memoSQLInfo.SelectionStart = mStr.Length + selectionStart; } private void lstField_DoubleClick(object sender, System.EventArgs e) { try { this.Cursor = Cursors.AppStarting; this.InsertString(this.lstField.SelectedItem.ToString().Trim()); this.Cursor = Cursors.Default; } catch (Exception ex) { this.Cursor = Cursors.Default; //RdbUtil.AddException(ex); } } private void lstOnlyValue_DoubleClick(object sender, System.EventArgs e) { try { this.Cursor = Cursors.AppStarting; string text = this.lstOnlyValue.SelectedItem.ToString().Trim(); if (!text.Equals("")) { this.InsertString(text); } this.Cursor = Cursors.Default; } catch (Exception ex) { this.Cursor = Cursors.Default; //RdbUtil.AddException(ex); } } private void btnIsListFinish_Click(object sender, System.EventArgs e) { try { if (this.m_FeatureClass == null) { MessageHelper.ShowTips("请设置要查询的图层"); } else { this.Cursor = Cursors.WaitCursor; this.lstOnlyValue.Items.Clear(); object selectedValue = this.lstField.SelectedValue; ItemInfo itemInfo = selectedValue as ItemInfo; if (itemInfo != null) { SQLSearch.ShowUniqueValues(itemInfo.InnerValue, this.lstOnlyValue, -1); } this.Cursor = Cursors.Default; } } catch (Exception ex) { //RdbUtil.AddException(ex); this.Cursor = Cursors.Default; } } private void btnClear_Click(object sender, System.EventArgs e) { this.memoSQLInfo.Text = ""; } private void btnLoad_Click(object sender, System.EventArgs e) { try { this.Cursor = Cursors.AppStarting; string openFileName = this.GetOpenFileName(); if (openFileName != "") { this.memoSQLInfo.Text = SQLSearch.ReadFile(openFileName); } this.Cursor = Cursors.Default; } catch (Exception ex) { //RdbUtil.AddException(ex); this.Cursor = Cursors.Default; } } private void btnVerify_Click(object sender, System.EventArgs e) { if (SQLSearch.VerifySql(this.m_FeatureClass, this.SQL)) { MessageHelper.ShowTips("验证成功!"); return; } MessageHelper.ShowTips("验证失败,请检查语句!"); } private string GetOpenFileName() { string result; try { if (this.openFileDialog1 == null) { this.openFileDialog1 = new KGIS.Framework.Utils.Dialog.OpenFileDialog(); } this.openFileDialog1.InitialDirectory = Application.ExecutablePath; this.openFileDialog1.Filter = "Exp Files(*.exp)|*.exp"; if (this.openFileDialog1.ShowDialog()) { result = this.openFileDialog1.FileName; } else { result = ""; } } catch (Exception ex) { //RdbUtil.AddException(ex); this.Cursor = Cursors.Default; result = ""; } return result; } private void btnSaveAs_Click(object sender, System.EventArgs e) { try { this.Cursor = Cursors.AppStarting; string text = this.memoSQLInfo.Text; SQLSearch.SaveFile(this.GetSaveFileName(), ref text); this.Cursor = Cursors.Default; } catch (Exception ex) { //RdbUtil.AddException(ex); this.Cursor = Cursors.Default; } } private string GetSaveFileName() { if (this.saveFileDialog1 == null) { this.saveFileDialog1 = new SaveFileDialog(); } this.saveFileDialog1.InitialDirectory = Application.ExecutablePath; this.saveFileDialog1.Filter = "Exp Files(*.exp)|*.exp"; this.saveFileDialog1.ShowDialog(); return this.saveFileDialog1.FileName; } } }