年度变更建库软件5.0版本
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

321 lines
11 KiB

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<IField, string> item = new ItemInfo<IField, string>(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<IField, string> itemInfo = selectedValue as ItemInfo<IField, string>;
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;
}
}
}