clsqueryhelp.cs
来自「以构建的方式来实现对通用的查询统计」· CS 代码 · 共 353 行
CS
353 行
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
using System.Collections;
using DevExpress.XtraEditors.Repository;
using dist.hb.EnvQueryStat.Pub;
namespace dist.hb.EnvQueryStat.Query
{
class clsQueryTemplateInfo
{
public string strAbstractQueryName;//抽象查询名称;
public string strAttField;//属性字段
public string strLayerName;//图层名称
public string strSpaceField;//空间字段
public string strVName;//视图名称
}//查询模板信息
class clsFieldInfo
{
public int VFieldID;
public string FieldName;
public string FieldAias;
public string FieldType;
public string DICT;
public bool IsShow;
public bool IsFilter;
public bool IsOrder;
public bool IsMainField;
public bool IsUserVisible;
}//一条字段信息
class clsQueryInstInfo
{
public int QueryInstID;
public int QueryClassID;
public int AbstractQueryID;
public string QueryInstName;
public int AttWinVisible;
public int SpWinVisible;
}//查询实例信息
//处理属性过滤
class clsQueryHelp
{
#region "类初始化"
private OleDbConnection m_OleDbConn;
private int m_nQueryInstID;//查询ID
private clsQueryTemplateInfo m_QueryTemplateInfo;//查询模板信息
private clsQueryInstInfo m_QueryInstInfo;//查询信息
private DataTable m_AttFilterTable;//属性过滤表
private DataTable m_FilterFieldInfoTable;//过滤查询字段信息表
private DataTable m_FieldInfoTable;//字段信息表
private string m_strAttFilterTbl = "FS_QAttFilter";
public clsQueryHelp()
{
m_nQueryInstID = -1;
m_OleDbConn = null;
m_FieldInfoTable = null;
m_QueryTemplateInfo = new clsQueryTemplateInfo();
m_QueryInstInfo = new clsQueryInstInfo();
htItemLookUp = new Hashtable();
}
~clsQueryHelp()
{
}
#endregion
#region "对外暴露的全局对象"
public void Initialize(OleDbConnection OleDbConn, int QueryInstID)//在使用该类前要首先调用该函数
{
m_OleDbConn = OleDbConn;
m_nQueryInstID = QueryInstID;
LoadQueryInstInfo();
LoadQueryTemplateInfo();
LoadAttFilterTable();
LoadFilterFieldsInfo();
LoadFieldsInfo();
}
public DataTable AttFilterTable//获取属性过滤表
{
get { return m_AttFilterTable; }
}
public DataTable FilterFieldInfoTable//获取过滤字段信息表
{
get { return m_FilterFieldInfoTable; }
}
public DataTable FieldInfoTable//获取字段信息表
{
get { return m_FieldInfoTable; }
}
public clsQueryTemplateInfo QueryTemplateInfo//查询模板信息
{
get { return m_QueryTemplateInfo; }
}
public clsQueryInstInfo QueryInstInfo//查询信息
{
get { return m_QueryInstInfo; }
}
#endregion
#region "相关信息加载函数"
//获取查询实例的信息
private void LoadQueryInstInfo()
{
string strSQL;
strSQL = "SELECT QueryInstID,QueryClassID,AbstractQueryID,QueryInstName,AttWinVisible,SpWinVisible " +
"FROM FS_QueryInst where QueryInstID = " +m_nQueryInstID.ToString();
OleDbConnection connection = new OleDbConnection(m_OleDbConn.ConnectionString);
connection.Open();
OleDbCommand command = new OleDbCommand(strSQL, connection);
OleDbDataReader reader = command.ExecuteReader();
if (!reader.HasRows) return;
if (reader.Read())
{
m_QueryInstInfo.QueryInstID = reader.GetInt32(0);
m_QueryInstInfo.QueryClassID = reader.GetInt32(1);
m_QueryInstInfo.AbstractQueryID = reader.GetInt32(2);
m_QueryInstInfo.QueryInstName = reader.GetString(3);
m_QueryInstInfo.AttWinVisible = reader.GetInt32(4);
m_QueryInstInfo.SpWinVisible = reader.GetInt32(5);
}
reader.Close();
}
//加载查询模板信息
private void LoadQueryTemplateInfo()
{
string strSQL;
strSQL = "SELECT AbstractQueryName, AttField, LayerName, SpaceField, VName " +
"FROM FS_AbstractQuery INNER JOIN FS_VTable ON FS_AbstractQuery.VTID = FS_VTable.VTID " +
"where AbstractQueryID = " + m_QueryInstInfo.AbstractQueryID.ToString();
OleDbConnection connection = new OleDbConnection(m_OleDbConn.ConnectionString);
connection.Open();
OleDbCommand command = new OleDbCommand(strSQL, connection);
OleDbDataReader reader = command.ExecuteReader();
if (!reader.HasRows) return;
if (reader.Read())
{
m_QueryTemplateInfo.strAbstractQueryName = tostring(reader.GetValue(0));
m_QueryTemplateInfo.strAttField = tostring(reader.GetValue(1));
m_QueryTemplateInfo.strLayerName = tostring(reader.GetValue(2));
m_QueryTemplateInfo.strSpaceField = tostring(reader.GetValue(3));
m_QueryTemplateInfo.strVName = tostring(reader.GetValue(4));
}
reader.Close();
}
private string tostring(object obj)
{
if (obj == null) return "";
else return obj.ToString();
}
//处理属性过滤表
private void LoadAttFilterTable()
{
DataSet ds = new DataSet();
string strSQL;
strSQL = "SELECT QAFid,QueryInstID,LeftBracket,Field,FieldName,relation,value1,RightBracket,logicSym,UserIsVisible "
+ "FROM " + m_strAttFilterTbl + " where UserIsVisible = 1 and QueryInstID = " + m_nQueryInstID.ToString();
OleDbDataAdapter Adapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_OleDbConn);
OleDbCommandBuilder custCB = new OleDbCommandBuilder(Adapter);
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = m_OleDbConn;
//cmd.Transaction = m_tran;
cmd.CommandType = CommandType.Text;
cmd.CommandText = strSQL;
Adapter.SelectCommand = cmd;
Adapter.Fill(ds, m_strAttFilterTbl);
m_AttFilterTable = ds.Tables[m_strAttFilterTbl];
for (int i = 0; i < m_AttFilterTable.Rows.Count; i++)
{
DataRow dr = m_AttFilterTable.Rows[i];
dr["UserIsVisible"] = true;
}
}
//加载过滤查询字段信息
private void LoadFilterFieldsInfo()
{
DataSet ds = new DataSet();
string strSQL = "SELECT FS_VTFieldDes.VFieldID as VFieldID, FieldName, FieldAias,FieldType, DICT, " +
" IsShow,IsFilter, IsOrder, IsMainField,IsUserVisible" +
" FROM FS_QuerySet INNER JOIN FS_VTFieldDes ON FS_QuerySet.VFieldID = FS_VTFieldDes.VFieldID " +
"where IsFilter = 1 and AbstractQueryID = " + m_QueryInstInfo.AbstractQueryID.ToString();
OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_OleDbConn);
adapter.Fill(ds, "FilterFieldsInfo");
m_FilterFieldInfoTable = ds.Tables["FilterFieldsInfo"];
}
//加载查询字段信息
private void LoadFieldsInfo()
{
DataSet ds = new DataSet();
string strSQL = "SELECT FS_VTFieldDes.VFieldID as VFieldID, FieldName, FieldAias,FieldType, DICT, " +
" IsShow,IsFilter, IsOrder, IsMainField,IsUserVisible" +
" FROM FS_QuerySet INNER JOIN FS_VTFieldDes ON FS_QuerySet.VFieldID = FS_VTFieldDes.VFieldID " +
"where AbstractQueryID = " + m_QueryInstInfo.AbstractQueryID.ToString();
OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_OleDbConn);
adapter.Fill(ds, "FieldsInfo");
m_FieldInfoTable = ds.Tables["FieldsInfo"];
}
#endregion
#region "获取字段信息函数"
public clsFieldInfo GetFieldInfo(int FieldId)
{
if (m_FieldInfoTable == null) return null;
DataRow[] drs = m_FieldInfoTable.Select("VFieldID = " + FieldId.ToString());
if (drs == null) return null;
clsFieldInfo FieldInfo = new clsFieldInfo();
FieldInfo.VFieldID = Convert.ToInt32(drs[0]["VFieldID"]);
FieldInfo.FieldName = drs[0]["FieldName"].ToString();
FieldInfo.FieldAias = drs[0]["FieldAias"].ToString();
FieldInfo.FieldType = drs[0]["FieldType"].ToString();
FieldInfo.DICT = drs[0]["DICT"].ToString();
FieldInfo.IsShow = Convert.ToBoolean(drs[0]["IsShow"]);
FieldInfo.IsFilter = Convert.ToBoolean(drs[0]["IsFilter"]);
FieldInfo.IsOrder = Convert.ToBoolean(drs[0]["IsOrder"]);
FieldInfo.IsMainField = Convert.ToBoolean(drs[0]["IsMainField"]);
object obj = drs[0]["IsUserVisible"];
if (obj.ToString() == "") FieldInfo.IsUserVisible = false;
else FieldInfo.IsUserVisible = Convert.ToBoolean(obj);
return FieldInfo;
}
public clsFieldInfo GetFieldInfo(string FieldName)
{
if (m_FieldInfoTable == null) return null;
DataRow[] drs = m_FieldInfoTable.Select("FieldName = '" + FieldName.ToString() + "'");
if (drs == null) return null;
if(drs.Length == 0) return null;
clsFieldInfo FieldInfo = new clsFieldInfo();
FieldInfo.VFieldID = Convert.ToInt32(drs[0]["VFieldID"]);
FieldInfo.FieldName = drs[0]["FieldName"].ToString();
FieldInfo.FieldAias = drs[0]["FieldAias"].ToString();
FieldInfo.FieldType = drs[0]["FieldType"].ToString();
FieldInfo.DICT = drs[0]["DICT"].ToString();
FieldInfo.IsShow = Convert.ToBoolean(drs[0]["IsShow"]);
FieldInfo.IsFilter = Convert.ToBoolean(drs[0]["IsFilter"]);
FieldInfo.IsOrder = Convert.ToBoolean(drs[0]["IsOrder"]);
FieldInfo.IsMainField = Convert.ToBoolean(drs[0]["IsMainField"]);
object obj = drs[0]["IsUserVisible"];
if (obj.ToString() == "") FieldInfo.IsUserVisible = false;
else FieldInfo.IsUserVisible = Convert.ToBoolean(obj);
return FieldInfo;
}
public DataRow GetFieldInfo1(int Fieldid)
{
DataRow[] rows = m_FieldInfoTable.Select("VFieldID = " + Fieldid.ToString());
if (rows == null) return null;
if (rows.Length == 0) return null;
return rows[0];
}
public bool IsStringType(string fieldName)
{
if (m_FieldInfoTable == null) return false;
DataRow[] drs = m_FieldInfoTable.Select("FieldName = '" + fieldName.ToString() + "'");
if (drs == null) return false;
if (drs.Length == 0) return false;
string FieldType = drs[0]["FieldType"].ToString();
if (FieldType == ConstDataType.CString) return true;
else return false;
}
#endregion
#region "处理grid下拉列表框的函数"
//处理属性过滤环境
public void FillrepositoryItemComboBox_field(RepositoryItemLookUpEdit repositoryItemLookUpEdit_field1)
{
if (repositoryItemLookUpEdit_field1 == null || m_FilterFieldInfoTable == null) return;
repositoryItemLookUpEdit_field1.DataSource = m_FilterFieldInfoTable;
repositoryItemLookUpEdit_field1.DisplayMember = "FieldAias";
repositoryItemLookUpEdit_field1.ValueMember = "VFieldID";
}
//对所有的LOOKUPEDIT进行预处理
Hashtable htItemLookUp ;
public void InitItemLookUp(DevExpress.XtraGrid.Views.Grid.GridView gridView1)
{
if (gridView1 == null) return;
DataRow[] rows = m_FilterFieldInfoTable.Select("FieldType = '" + ConstDataType.CString + "' AND DICT <>''");
if (rows == null) return;
htItemLookUp.Clear();
foreach (DataRow dr in rows)
{
int fieldID = Convert.ToInt32(dr["VFieldID"].ToString());
string DataType = dr["FieldType"].ToString();
string SQL = dr["DICT"].ToString();
//
// RepositoryItemLookUpEdit lookup = CreateNewLookUpEdit(gridView1, fieldID);
//htItemLookUp.Add(fieldID, lookup);//
if (DataType == ConstDataType.CString && SQL != "")//重复检查
{
DataSet ds = new DataSet();
OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(SQL, m_OleDbConn);
adapter.Fill(ds, "DICT");
AddItemComboBox(gridView1, ds.Tables["DICT"], fieldID);
}
//((System.ComponentModel.ISupportInitialize)(lookup)).EndInit();
}
}
private RepositoryItemComboBox AddItemComboBox(DevExpress.XtraGrid.Views.Grid.GridView gridView1,
DataTable dt, int fieldid)
{
if (dt == null) return null;
RepositoryItemComboBox repositoryItemComboBox1 = new DevExpress.XtraEditors.Repository.RepositoryItemComboBox();
((System.ComponentModel.ISupportInitialize)(repositoryItemComboBox1)).BeginInit();
gridView1.GridControl.RepositoryItems.Add(repositoryItemComboBox1);
repositoryItemComboBox1.AutoHeight = false;
repositoryItemComboBox1.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
repositoryItemComboBox1.Name = "repositoryItemComboBox1" + fieldid.ToString();
htItemLookUp.Add(fieldid, repositoryItemComboBox1);//
foreach (DataRow dr in dt.Rows)
{
repositoryItemComboBox1.Items.Add(dr["name"].ToString());
}
((System.ComponentModel.ISupportInitialize)(repositoryItemComboBox1)).EndInit();
return repositoryItemComboBox1;
}
public RepositoryItemComboBox GetLookupEdit(int fieldID)
{
return (RepositoryItemComboBox)htItemLookUp[fieldID];
}
#endregion
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?